LAMP 系統(tǒng)性能調(diào)優(yōu)之內(nèi)核調(diào)優(yōu)措施
LAMP
LAMP的一些快速的內(nèi)核調(diào)優(yōu)措施
大多數(shù) Linux 發(fā)布版都定義了適當?shù)木彌_區(qū)和其他 Transmission Control Protocol(TCP)參數(shù)。可以修改這些參數(shù)來分配更多的內(nèi)存,從而改進網(wǎng)絡(luò)性能。設(shè)置內(nèi)核參數(shù)的方法是通過 proc 接口,也就是通過讀寫 /proc 中的值。幸運的是,sysctl 可以讀取 /etc/sysctl.conf 中的值并根據(jù)需要填充 /proc,這樣就能夠更輕松地管理這些參數(shù)。清單 2 展示在互聯(lián)網(wǎng)服務器上應用于 Internet 服務器的一些比較激進的網(wǎng)絡(luò)設(shè)置。
清單 2. 包含較為激進的網(wǎng)絡(luò)設(shè)置的 /etc/sysctl.conf
- # Use TCP syncookies when needed
- net.ipv4.tcp_syncookies = 1
- # Enable TCP window scaling
- net.ipv4.tcp_window_scaling: = 1
- # Increase TCP max buffer size
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- # Increase Linux autotuning TCP buffer limits
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- # Increase number of ports available
- net.ipv4.ip_local_port_range = 1024 65000
將這些設(shè)置添加到 /etc/sysctl.conf 的現(xiàn)有內(nèi)容中。第一個設(shè)置啟用 TCP SYN cookie。當從客戶機發(fā)來新的 TCP 連接時,數(shù)據(jù)包設(shè)置了 SYN 位,服務器就為這個半開的連接創(chuàng)建一個條目,并用一個 SYN-ACK 數(shù)據(jù)包進行響應。在正常操作中,遠程客戶機用一個 ACK 數(shù)據(jù)包進行響應,這會使半開的連接轉(zhuǎn)換為全開的。有一種稱為 SYN 泛濫(SYN flood) 的網(wǎng)絡(luò)攻擊,它使 ACK 數(shù)據(jù)包無法返回,導致服務器用光內(nèi)存空間,無法處理到來的連接。SYN cookie 特性可以識別出這種情況,并使用一種優(yōu)雅的方法保留隊列中的空間(細節(jié)參見 參考資料 一節(jié))。大多數(shù)系統(tǒng)都默認啟用這個特性,但是確保配置這個特性更可靠。
啟用 TCP 窗口伸縮使客戶機能夠以更高的速度下載數(shù)據(jù)。TCP 允許在未從遠程端收到確認的情況下發(fā)送多個數(shù)據(jù)包,默認設(shè)置是最多 64 KB,在與延遲比較大的遠程客戶機進行通信時這個設(shè)置可能不夠。窗口伸縮會在頭中啟用更多的位,從而增加窗口大小。
后面四個配置項增加 TCP 發(fā)送和接收緩沖區(qū)。這使應用程序可以更快地丟掉它的數(shù)據(jù),從而為另一個請求服務。還可以強化遠程客戶機在服務器繁忙時發(fā)送數(shù)據(jù)的能力。
最后一個配置項增加可用的本地端口數(shù)量,這樣就增加了可以同時服務的最大連接數(shù)量。
在下一次引導系統(tǒng)時,或者下一次運行 sysctl -p /etc/sysctl.conf 時,這些設(shè)置就會生效。
通過文章的描述和代碼的分析,我們可以通過內(nèi)核調(diào)優(yōu)措施來對LAMP進行調(diào)優(yōu)!
【編輯推薦】
- LAMP 系統(tǒng)性能調(diào)優(yōu)之度量性能
- LAMP 系統(tǒng)性能調(diào)優(yōu)之理解 LAMP 架構(gòu)
- LAMP網(wǎng)站架構(gòu)方案解剖
- LAMP系統(tǒng)優(yōu)化
- LAMP的平臺組成
- lamp的起源
- lamp 簡單介紹 (圖)