首頁  >  文章  >  後端開發  >  nginx 伺服器系統最佳化

nginx 伺服器系統最佳化

WBOY
WBOY原創
2016-08-08 09:32:57973瀏覽

1 linux 預設 core file size 為 0

何謂 core 文件,當一個程式崩潰時,在進程目前工作目錄的 core 檔案中複製了該進程的儲存影像。 core 檔案只是一個記憶體映像(同時加上除錯資訊),主要是用來除錯的。 core 檔案是二進位文件,需要用對應的工具來分析程式崩潰時的記憶體映像。

系統預設 core 檔案的大小為 0 ,所以沒有建立。可以用 ulimit 指令來檢視和修改 core 檔的大小。

 

$ulimit -c

0

$ ulimit -c 1000

$ ulimit -c

1000

-c 指定修改 core 檔案的大小, 1000 指定了 core 檔案大小。也可以對 core 檔案的大小不做限制,如:

# ulimit -c unlimited

#ulimit -c

Unlimited

 

如果想讓修改永久生效,則需要修改設定檔

 

Vim /etc/profile 中的:

ulimit -S -c 0 > /dev/null 2>&1

修改為

ulimit -S -c 1000 > /dev/null 2>&1

 

參考資料: http://hi.baidu.com/jrckkyy/blog/item/2562320a5bdbc534b1351d95.html

 

 2 linux 預設值 open files 和 max user processes 為 1024

#ulimit -n

1024

#ulimit –u

1024

問題描述: 說明 server 只允許同時開啟 1024 個文件,處理 1024 個使用者進程

使用ulimit -a 可以查看目前系統的所有限制值,使用ulimit -n 可以查看目前的最大開啟檔案數。

新裝的linux 預設只有1024 ,當作負載較大的伺服器時,很容易遇到error: too many open files 。因此,需要將其改大。

 

解決方法:

使用 ulimit –n 65535 可即時修改,但重啟後就無效了。 (註ulimit -SHn 65535 等效 ulimit -n 65535 ,-S 指soft ,-H 指hard)

有以下三種修改方式:

1. 在/etc/rc.local 中增加一行 ulimit -SHn 65535
2. 在/etc/profile 中增加一行 ulimit -SHn 65535
3. 在/etc/security/limits.conf 最後增加:

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

具體使用哪一種,在 CentOS 中使用第1 種方式無效果,使用第3 種方式有效果,而在Debian 中使用第2 種有效果

 # ulimit -n

65535

# ulimit -u

65535

 

備註:ulimit 指令本身就有分軟硬設置,加-H 就是硬,加-S 就是軟預設顯示的是軟限制

soft 限制指的是目前系統生效的設定值。 hard 限制值可以被一般使用者降低。但是不能增加。 soft 限制不能設定的比 hard 限制更高。 只有 root 使用者才能夠增加 hard 限制值。

 

 3 發現有大量 TIME_WAIT 狀態的連接


問題描述: 發現大量 time_wait 狀態的連結 , 有時甚至達到 7000 以上

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'

 查找較多 time_wait 連接

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

發現是 DB 伺服器的 mysql 和 memcache 的未釋放導致。

解決方法: 對於大量使用 tcp 連線的應用來說,也需要對 /etc/sysctl.conf 中的參數進行相應最佳化 :

vim /etc/sysctl.conf

編輯文件,加入以下內容:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

然後執行 /sbin/sysctl -p 讓參數生效。

 

優化後:

發現大量的 TIME_WAIT 已不存在, mysql 進程的佔用率很快就降下來的。

以上就介紹了nginx 伺服器系統最佳化,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:nginx版本升級下一篇:nginx版本升級