排查問題類

一、公司裏MySQL數據庫經常使用cpu達到230%,服務器爲4核心,如果不正常,如何排查?

1. 登錄IDC機房服務器查看流量圖,流量正常,故障與流量無關
2. 爲了快速解決問題,可以先重啓MySQL服務,在查sysql 進程,,啓動之後,cpu使用率比較高
3. 登錄數據庫,show processlist  ;  查看當前正在執行的sql語句,發現幾個表現出sending data 狀態,sql 執行時間過長
4. 通知開發人員,查看這幾個表有沒有增加索引
5. 在MySQL配置文件裏面,my.cnf 中增加參數 , tmp_table_size =300M  query_cache_size=1024M  cpu下降,cpu 還是超過了100%  ,網頁打開比較慢
6. 登錄MySQL  , 執行 show index from tablename   shending data 
7. 執行增加索引的語句,把出現sending data 幾個表,全部加上索引
		ALTER TABLE table_name ADD INDEX index_name
8、 需要大量查詢的表一定要加索引,指定相關規範。

二、網絡排錯基本思路:

	1. 在物理層檢查連接是否正常
	2. 檢查IP地址,子網掩碼,網關的配置,嘗試ping網關
	3. 檢查DNS配置
	4. 檢查iptables 防火牆規則,是否有禁止訪問外網的策略
	5. 檢查是否有人冒充網關,如: Arp 欺騙
	6. 查看網絡內核參數

三、CPU飈高如何處理:

top 命令可以查看進程的CPU、內存等資源的使用情況。
vmstat命令可以查看系統整體的cpu,內存的使用情況
1.使用top直接終止cpu消耗大的進程:

      top命令查看對cpu消耗大的進程,直接輸入"k",然後輸入相應進程的PID號即可終止該進程。

在這裏插入圖片描述

2、通過top觀察cpu很空閒,但是負載比較高的情況:

      load average 是對 CPU 負載的評估,其值越高,說明其任務隊列越長,處於等待執行的任務越多。
      出現此種情況時,可能是由於僵死進程導致的。可以通過指令 ps -axjf  查看是否存在 D 狀態進程。
      D 狀態是指不可中斷的睡眠狀態。該狀態的進程無法被 kill,也無法自行退出。只能通過恢復其依賴的資源或者重啓系統來解決。

四、磁盤有剩餘空間,但是存放文件的時候提示磁盤已滿,如何處理

在磁盤上建立文件的時候需要兩個條件:
    1.磁盤空間,
    2.需要有inode  任何一個滿了都回提示設備沒有空間。
	此處具體原因是由於磁盤的inode分配完了,導致提示磁盤滿。
	可以使用df -ia查看磁盤詳細信息。

	inode譯成中文就是索引節點,每個存儲設備(例如硬盤)或存儲設備的分區被格式化爲文件系統後,應該有兩部份;
  一部份是inode,而inode呢,就是用來存儲這些數據的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。
另一部份是Block,Block是用來存儲數據用的。inode爲每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令,能通過inode值最快的找到相對應的文件。

所以當服務器的Block雖然還有剩餘,但inode已經用滿,因此在創建新目錄或文件時,系統提示磁盤空間不足。

查看我的/opt/file 分區 磁盤有剩餘空間 卻無法創建文件。
解決:
1、刪除一些無用的文件或者文件夾,釋放inode,釋放出分區的一部分inode。

	不小心誤刪文件可以使用	extundelete	
	extundelete是基於Linux的一個數據恢復工具,它通過分析文件系統的日誌,解析出所有文件的inode信息,
	從而可以恢復Linux下主流的ext3,ext4文件系統下被誤刪除的文件。

2、 用軟連接將空閒分區 /tmp/file 目錄連接到 /opt/file ,用 /tmp 分區的inode來緩解**/opt/file**分區的inode不足的問題
ln -s /tmp/file /opt/file

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章