問(wèn)題:
成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比臨潭網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式臨潭網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臨潭地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴(lài)。
如果經(jīng)常遇到CPU瓶頸而導(dǎo)致的SQLServer宕機(jī),那如何去發(fā)現(xiàn)并解決這些相關(guān)的問(wèn)題?
解決方案:
導(dǎo)致CPU成為SQLServer性能問(wèn)題的原因有很多,比較明顯的原因是因?yàn)橘Y源不足。但是,CPU的利用率可以通過(guò)配置的更改和查詢(xún)的優(yōu)化來(lái)降低,所以當(dāng)你想買(mǎi)更快更好的處理器之前,先要考慮前面的操作。下面是使用一些內(nèi)置工具來(lái)識(shí)別CPU相關(guān)瓶頸:
性能監(jiān)視器(Performance Monitor):
可以使用性能監(jiān)視器來(lái)檢查CPU的負(fù)載。檢查Processor:% Processor Time 這個(gè)計(jì)數(shù)器:如果長(zhǎng)期超過(guò)80%/處理器,那很有可能面臨了CPU相關(guān)瓶頸。
CPU密集操作主要是編譯和重編譯。你可以通過(guò)使用SQL Statistics對(duì)象計(jì)數(shù)器來(lái)監(jiān)視它們的情況。也可以監(jiān)控批處理接收的數(shù)量來(lái)查看。如果SQL Recompilations/sec 中的BatchRequests/sec的速率很高,那就有潛在的問(wèn)題:
配置和監(jiān)視以下計(jì)數(shù)器:
SQL Server: SQL Statistics: SQL Compilations/sec
SQL Server: SQL Statistics: SQL Recompilations/sec
SQL Server: SQL Statistics: Batch Requests/sec
可以從MSDN中獲取關(guān)于這部分的詳細(xì)信息: MSDN Library.
另外一個(gè)用于探測(cè)CPU相關(guān)問(wèn)題的計(jì)數(shù)器是:SQL Server: Cursor Manager By Type – CursorRequests/Sec ,用于顯示你的服務(wù)器上游標(biāo)使用情況。如果你看到每秒有數(shù)以百計(jì)的游標(biāo)請(qǐng)求,那很有可能是因?yàn)榈托У挠螛?biāo)使用和小體積提取操作(small fetch size)引起性能問(wèn)題。
內(nèi)部并行查詢(xún)同樣會(huì)引起CPU問(wèn)題,可以檢查:
SQL Statistics:Batch Requests/sec counter 計(jì)數(shù)器。在CPU生命周期中,每秒的批處理應(yīng)該很小。如果過(guò)多,意味著正在使用并行計(jì)劃運(yùn)行。
動(dòng)態(tài)管理視圖(DMVs):
以下是對(duì)排查CPU瓶頸游泳的DMVs。動(dòng)態(tài)視圖:sys.dm_exec_query_stats顯示目前緩存的批處理或者使用CPU的過(guò)程。下面的查詢(xún)用于檢查耗費(fèi)CPU的執(zhí)行計(jì)劃:
select plan_handle,
sum(total_worker_time) as total_worker_time,
sum(execution_count) as total_execution_count,
count(*) as number_of_statements
from sys.dm_exec_query_stats
group by plan_handle
order bysum(total_worker_time), sum(execution_count) desc
SQLServer2008在每個(gè)查詢(xún)編譯時(shí),會(huì)計(jì)算其hash值。你可以在query_hash列中找到該值,是否兩個(gè)查詢(xún)僅僅字面值不同但是使用相同query_hash值。該值也在 Showplan/Statistics XML QueryHash屬性中可以查看。
Plan_generation_num列顯示一個(gè)查詢(xún)被重編譯的次數(shù)。
SQLServer優(yōu)化器嘗試選擇能提供最快響應(yīng)時(shí)間的執(zhí)行計(jì)劃,但是不代表總是低CPU利用。低效的查詢(xún)計(jì)劃會(huì)引起CPU的好用,此時(shí)同樣可以使用sys.dm_exec_query_stats 來(lái)監(jiān)控。
如果你想有一個(gè)對(duì)SQLServer優(yōu)化所耗費(fèi)時(shí)間的總覽,可以檢查:
sys.dm_exec_query_optimizer_info 。其中的消耗時(shí)間和最后開(kāi)銷(xiāo)會(huì)非常有用。
可以使用以下DMVs來(lái)查詢(xún)內(nèi)部并行查詢(xún)及其查詢(xún)文本、執(zhí)行計(jì)劃的情況:
sys.dm_exec_cached_plan: Shows the cached query plans.
sys.dm_exec_requests: Shows each executing request in the SQL Server instance.
sys.dm_exec_sessions: Shows all active user connections and internal tasks.
sys.dm_exec_sql_text: Shows the text of the SQL batches.
sys.dm_os_tasks: Shows each active task within SQL Server.
SQL Server Profiler:
如果性能監(jiān)視器發(fā)現(xiàn)有問(wèn)題,同樣可以使用SQLServer Profiler來(lái)發(fā)現(xiàn)不必要的編譯和重編譯。SQLServer Profiler 跟蹤能幫助你找到一直重編譯的存儲(chǔ)過(guò)程??梢允褂孟旅娴氖录?/p>
SP:Recompile, CursorRecompile, SQL:StmtRecompile: 這個(gè)事件是針對(duì)SQLServer的重編譯。SP:Recompile事件中的EventSubClass 說(shuō)明了重編譯的原因。
· Showplan XML For Query Compile: 這個(gè)事件是針對(duì)T-SQL語(yǔ)句的重編譯。包含了查詢(xún)計(jì)劃和過(guò)程的對(duì)象ID.注意對(duì)這個(gè)事件運(yùn)行一個(gè)跟蹤,能得到利用系統(tǒng)資源的重要信息。但是,如果性能計(jì)數(shù)器報(bào)告SQL Compilations/sec 的值很高時(shí),跟蹤將非常好資源。
低效的游標(biāo)可以使用RPC:Completed事件來(lái)跟蹤。查看sp_cursorfetch語(yǔ)句并檢查第四個(gè)參數(shù),包含每次提前(fetch)包含的行數(shù)。
1,首先通過(guò)任務(wù)管理器進(jìn)行進(jìn)程排序,查找占用內(nèi)存較大的程序進(jìn)程。一般占用內(nèi)存較大的進(jìn)程有W3WP、sqlserver、mysqld-nt.exe;
2, 站點(diǎn)進(jìn)程w3wp 可以在cmd命令行中通過(guò) iisapp 命令來(lái)對(duì)應(yīng)是那個(gè)網(wǎng)站占用內(nèi)存較大??梢酝ㄟ^(guò)設(shè)置回收時(shí)間、內(nèi)存最大使用值或共用進(jìn)程池來(lái)減少內(nèi)存的占用,但是如果要保證網(wǎng)站的訪問(wèn)質(zhì)量,還是建議升級(jí)至更高型號(hào)來(lái)解決;
3,數(shù)據(jù)庫(kù) sql server 也可以通過(guò)數(shù)據(jù)庫(kù)的企業(yè)管理器來(lái)設(shè)置最大內(nèi)存占用,但是如果網(wǎng)站程序必須要占用較大內(nèi)存的話(huà),設(shè)置后會(huì)發(fā)生頁(yè)面報(bào)錯(cuò)、打不開(kāi)等問(wèn)題;
4,MYSQL本身會(huì)占用較大虛擬內(nèi)存,如果不使用mysql數(shù)據(jù)庫(kù)的話(huà),可以將其停止。
VIA”協(xié)議 是類(lèi)似ip的一種協(xié)議,普通幾乎用不到。你禁用了,對(duì)系統(tǒng)也不相關(guān)。
你把你的sql的日志發(fā)上來(lái)??匆幌略颉?/p>
你不要告我,你找不到日志在那兒?
基本不會(huì),他有回滾機(jī)制,只要是你執(zhí)行完成的語(yǔ)句就寫(xiě)入數(shù)據(jù)庫(kù)了,執(zhí)行到一半的語(yǔ)句他會(huì)根據(jù)日志回滾。所以只會(huì)出現(xiàn)完全執(zhí)行完和完全沒(méi)執(zhí)行兩種情況,不會(huì)數(shù)據(jù)丟失(前提是宕機(jī)沒(méi)有損壞你數(shù)據(jù)庫(kù)文件)
分享題目:sqlserver宕機(jī),sqlserver卡死
瀏覽路徑:http://jinyejixie.com/article36/dsedosg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、標(biāo)簽優(yōu)化、網(wǎng)站改版、ChatGPT、做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)