linux服務器調優的經驗
目錄:
1、系統故障排除思路
重視報錯信息
永遠不要忘記日誌文件
分析、定位、解決問題
2、影響linux性能的因素
服務器硬件因素
操作系統的相關因素
程序因素
3、系統性能優化工具
Cpu性能優化工具 vmstat,iosta,sar
內存性能檢測工具 free,top,sar,pidstat
磁盤性能評估工具 iostat,sar
網絡性能分析工具 ping,mtr,netstat
4、系統性能分析與標準
5、性能調優的思路與技巧分享
幾個故障鼓勵案例和性能優化案例
Su命令切換用戶導致的問題
磁盤突然變成只讀怎麼處理
基於動、靜態網站的優化案例
一、Linux故障排除思路
1、重視報錯提示信息
每個錯誤的出現,都是給出錯誤提示信息,一般情況下這個提示基本定位了問題所在,因此一定要重視這個報錯信息,如果對這些錯誤信息視而不見,問題永遠得不到解決。
2、永遠不要忘記日誌文件
日誌排查問題的第一思路,一定要學會查看日誌的習慣。
系統日誌:dmesg、/var/log/messages、/var/log/secure(登錄日誌文件)
應用日誌:
Apache:$APACHE_BASE/logs/error_log $APACHE_BASE/logs/access_log
Nginx:$NGINX_BASE/logs/error_log $NGINX_BASE/logs/access_log
Tomcat: $TOMCAT_BASE/logs/catalina.out
3、分析,定位問題,解決問題
綜合分析過程,要以日誌爲導向,配合應用環境,根據報錯信息,排除故障。
4、網絡故障排除思路
(1)網絡硬件傳輸問題
(2)檢查網卡是否能正常工作,可以從網卡是否正常加載,網卡IP設置是否正確
(3)檢查DNS是否設定正確
(4)服務是否正常工作
(5)訪問權限是否打開(iptables/selinux)
(6)局域網主機之間聯機是否正常
二、影響Linux性能各種因素
1、系統硬件資源
(1)CPU
如何判斷多核CPU與超線程
消耗CPU的業務:動態web服務、mail服務
(2)內存
物理內存與swap的取捨
選擇64位與Linux系統
消耗內存的業務:內存數據庫(redis/hbase/mongdb)
(3)磁盤IO
RAID 技術(RAID 0/1/5/01/10)
SSD 磁盤
消耗磁盤的業務:數據庫服務器
(4)網絡帶寬
網卡/交換機的選擇
操作系統的雙網卡綁定
消耗帶寬的業務:hadoop平臺、視頻業務的平臺
2、操作系統相關資源
(1)系統安裝優化
磁盤分區、RAID設置、swap設置
(2)內核參數優化
Ulimit -n(最大打開文件數)
Ulimit -u (最大用戶數)
(3)文件系統優化
Ext2:linux下標準文件系統,無日誌記錄(inode)功能
Ext3:在ext2基礎上增加了日誌記錄功能(inode),僅支持3200個子目錄
Ext4:在ext3的後續版本、linux2.6.28內核開始支持,無限子目錄支持,快速fsck
Xfs:高性能文件系統,linux3.10內核開始默認支持
建議:
讀操作頻繁,同時小文件衆多的應用,首選ext4文件系統,接下來是xfs、ext3
寫操作頻繁的應用,首選是xfs,接下來依次是ext4和ext3
對性能要求不高、數據安全要求不高的業務、ext3是比較好的選擇
三、Linux性能優化工具
1、cpu性能評估工具
(1)vmstat(系統自帶工具)
利用vmstat命令可以對操作系統的內存信息、進程狀態、CPU活動等
常用方式:vmstat 3 5
表示每3秒更新一次輸出信息,統計5秒後停止輸出
(2)iostat(需要安裝sysstat工具包)
Iostat是I/O statistics(輸入/輸出統計)的縮寫,主要的功能是對系統的磁盤I/O操作進行監視
常用方式:iostat -c 3 5
其中,-c表示顯示CPU的使用情況,-d:顯示磁盤的使用情況
(3)uptime命令
Uptime是監控系統性能最常用的一個命令,主要用來統計系統當前的運行狀況,輸出的信息依次爲:系統現在的時間、系統上次開機到現在運行了多長時間、系統目前有多少登錄用戶、系統在一分鐘內、五分鐘內、十五分鐘內的平均負載。
2、內存性能評估
(1)free命令
Free命令是監控linux內存使用狀況最常用的指令
常見用法: free -m
(2)sar/pidstat
此兩個命令主要用於監控全部或指定進程佔用系統的情況,如CPU,內存、設備IO。
此三個共用參數:-(獲取CPU狀態)、-r(獲取內存狀態)、-d(獲取磁盤)
常用組合:
Sar -u 3 獲取cpu3秒內的狀態
Pidstat -r -p 1 3獲取內存3秒內的狀態(獲取指定的進程id)
3、網絡性能評估
(1)ping命令
(2)Netstat 命令
Netstat -i(查看網絡接口情況)
Netstat -r(查看路由情況)
(3)mtr/traceroute 命令
跟蹤網絡路由狀態,推薦使用mtr,動態跟蹤網絡路由,用於排除網絡問題十分方便
四、系統性能分析標準
影響性能因素評判標準
好壞 糟糕
CPUuser%+sys%<70%user%+sys%=85user%+sys%>=90
內存Swap IN(si)=0Per CPU with 10 page/sMoreSwap In & Swap Out
Swap Out(so)=0
磁盤iowait%<20%iowait%=35%iowait%>=50
五、幾個故障處理和優化案例
1、系統ing無法執行su操作
問題現象:
Su : warning :cannot change directory to /home/people:Permission denied
Su:/bin/bash:Permission denied
解決思路:
從上面錯誤提示可知是權限出現了問題,那麼可以從權限入手進行排查,基本思路如下:
用戶目錄/home/people權限問題
Su 程序執行權限問題 ll /bin/su
程序依賴的共享庫權限的問題 ldd /bin/su
Selinux問題導致 getentforce
系統根空間問題
最終解決方法:
發現根目錄的權限問題
(注意解決思路)
2、”Read-only file system” 問題分析與解決
問題現象:網站無法添加內容
解決思路:
網站程序可能出現問題
磁盤出現問題
文件系統問題
解決方法:
卸載磁盤分區,用fsck命令修復磁盤分區
3、基於動態、靜態內容結合的網站優化案例
硬件:DELL R710 3臺,32GB內存、CPU 2顆8核、磁盤 SATA 600GB+2TB
軟件環境:nginx+tomcat 架構,通過nginx做負載均衡
現象描述:平時訪問量小時,網站正常,當訪問量稍大時,網站訪問很慢,網站搞活動時,基本處於無法打開狀態,而nginx服務器帶寬佔最高在30M左右,後端2個tomcat服務器佔用帶寬佔用也在30M左右
分析問題:
(1)硬件、系統方面
(2)網絡方面
(3)軟件架構方面
(4)程序配置方面
步驟:分發用戶請求-網站動靜資源分離
解決問題:
(2) 網站動、靜態分離
Location ~*\.(gif|jpg|png|js|css)${
Root /data/static/images/ROOT;
}
Nginx 中的location匹配規則
首先匹配=,其次匹配^~,然後是按文件中順序的正則匹配,最後是交給/通用匹配。當匹配成功時候,停止匹配,按當前匹配規則處理請求
(3)Tomcat JVM參數優化
優化參數:
-server -Xms3550m -Xmx3550m -Xmn1g -XX:PermSize=256m -XX:MaxPermSize=512m
整個堆內存大小 = 年輕代大小 + 年老代大小 + 持久代大小
-Xms3550m:設置JVM最大內存3550m
-Xmx3550m:設置JVM初始堆內存3550M
-Xmn2g:設置堆內存年輕代大小爲2G.。整個堆內存大小 = 年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小爲64m,所以增大年輕代後,將會減小年輕待大小。此值對系統性能影響較大
-XX:PermSize=256m :設置堆內存持久代初始值爲256m
-XX:MaxPermSize=512m:設置持久代最大值爲512m
學習心得:
對於調優線上服務器的原則就是結合業務的需求,對發生的問題要結合日誌解決問題,查找根源發生的問題。解決問題時需要注重思路的養成,方便以後處理相關類似問題。