2008-09-24 80 views
8

我知道這不是一個直接的編程問題,但在stackoverflow上的人似乎能夠回答任何問題。nginx設置問題

我有一臺運行Centos 5.2 64位的服務器。相當強大的雙核2服務器,4GB內存。它主要提供靜態文件,閃光燈和圖片。當我使用lighttpd時,它可以輕鬆提供超過80 MB /秒的速度,但是當我使用nginx進行測試時,速度會降至20 MB /秒以下。

我的設置是非常簡單的,使用默認的安裝文件,我已經添加了以下

user lighttpd; 
worker_processes 8; 
worker_rlimit_nofile 206011; 
#worker_rlimit_nofile 110240; 

error_log /var/log/nginx/error.log; 
#error_log /var/log/nginx/error.log notice; 
#error_log /var/log/nginx/error.log info; 

pid  /var/run/nginx.pid; 


events { 
    worker_connections 4096; 
} 

http { 
.... 

keepalive_timeout 2; 
.... 
} 

而且我認爲nginx的應該是至少強大,所以我一定不能做的事情。

+0

你的lighttpd配置是什麼樣的?可能比較有趣。此外,由於lighttpd是單線程的,但是你在雙核上 - 你是否啓動兩個lighttpds,或者你是否使用單個實例處理80mb/s? – Till 2008-09-24 14:42:39

回答

3

也許lighttpd使用某種緩存?有一篇很棒的文章here,描述瞭如何使用nginx設置memcached,以提高400%的性能。

memcached模塊上的nginx文檔是here

6

當你重裝你的nginx(kiil -HUP),你會得到這樣的事情在你的錯誤日誌

 
2008/10/01 03:57:26 [notice] 4563#0: signal 1 (SIGHUP) received, reconfiguring 
2008/10/01 03:57:26 [notice] 4563#0: reconfiguring 
2008/10/01 03:57:26 [notice] 4563#0: using the "epoll" event method 
2008/10/01 03:57:26 [notice] 4563#0: start worker processes 
2008/10/01 03:57:26 [notice] 4563#0: start worker process 3870 

什麼事件方法你nginx的編譯使用?

你在做什麼access_log?考慮添加buffer = 32k,這將減少日誌文件寫入鎖的爭用。

考慮減少工作人員數量,這聽起來違反直覺,但工作人員需要爲accept()等sys調用彼此同步。嘗試減少工人數量,最好我建議1

你可以嘗試明確設置讀取和監聽套接字上寫socket緩存,見http://wiki.codemongers.com/NginxHttpCoreModule#listen

1

建議: - 每個處理器使用1名工人。 - 檢查各種nginx緩衝區設置