Linux
推薦的 Apache 配置?
如果這樣的問題對你來說太膚淺,很抱歉提出這樣的問題。考慮到以下資訊,您將如何配置 httpd.conf?
伺服器繁忙時頁面載入時間達到30秒。
伺服器:
Quad-Xeon 3220 / 8GB 記憶體 / 2x250GB SATAII / 10TB BW / 1GiGE / 8 IPS (SoftLayer), CentOS 5 (64-bit) Plesk 9.5
Linux server.x.com 2.6.18-274.17.1.el5 #1 SMP Tue Jan 10 17:25:58 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
伺服器上的站點平均每天接收大約 500,000 次網頁瀏覽和 200GB。根據http://whos.amung.us/stats/ ,當伺服器繁忙時,大約有 1500 名訪問者線上。
top - 11:15:08 up 23 days, 12:21, 1 user, load average: 0.30, 1.09, 1.84 Tasks: 453 total, 1 running, 452 sleeping, 0 stopped, 0 zombie Cpu(s): 2.9%us, 2.8%sy, 0.0%ni, 90.3%id, 3.7%wa, 0.0%hi, 0.3%si, 0.0%st Mem: 8165772k total, 8065268k used, 100504k free, 348884k buffers Swap: 1052248k total, 208k used, 1052040k free, 6466136k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15573 mysql 15 0 601m 80m 4520 S 35.1 1.0 2026:37 mysqld 19381 apache 15 0 307m 15m 3312 S 1.0 0.2 0:02.73 httpd 13230 apache 15 0 307m 15m 3296 S 0.7 0.2 0:03.74 httpd 14152 apache 15 0 307m 15m 3284 S 0.7 0.2 0:03.91 httpd 16147 apache 15 0 307m 15m 3296 S 0.7 0.2 0:03.14 httpd 16957 apache 15 0 307m 15m 3292 S 0.7 0.2 0:03.03 httpd
httpd.conf 文件:
Timeout 60 KeepAlive On MaxKeepAliveRequests 300 KeepAliveTimeout 5 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
需要考慮的事項:
- 您的最大線上客戶數約為 1500
- 每個
httpd
程序使用的記憶體量(大約 300MB 來自您的輸出)和您的機器擁有的記憶體量。徹底檢查
httpd.conf
並刪除任何不必要的模組以減少記憶體佔用是個好主意。一旦你這樣做了,你就可以開始MaxClients
逐漸加註ServerLimit
。您也需要提高,
StartServers
但再次逐步執行此操作,並在每次更改後監視記憶體使用情況和站點性能一段時間。MinSpareServers``MaxSpareServers
其他需要考慮的事情是在 Apache 或(如 Fernando 建議的)APC 前面放置Varnish之類的東西。