現在越來越多的站點開始用 Nginx ,("engine x") 是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發布。
在高并發連接的情況下,Nginx是Apache服務器不錯的替代品。Nginx同時也可以作為7層負載均衡服務器來使用。根據測試結果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3萬以上的并發連接數,相當于同等環境下Apache的10倍。
但很多人用 Nginx 的時候都會出現 500 錯誤,根據我使用的情況來看,很大一部分原因是 因為文件打開句柄太小有關。
在linux 下 使用這個命令增加進程打開的文件句柄。
ulimit -SHn 51200
默認只用1000 當鏈接數小的時候看不出來,使用這種處理方法可以有效防止500錯誤出現。
今天訪問網站的時候,偶爾會遇上500 Internal Server Error的錯誤提示頁面.
查了相關資料認為是訪問過大,系統內核進程受限才出現的.
答案如下:
$ ulimit -n
11095
程序限制只能打開11095個文件,ulimit命令是設置當前用戶一個進程可擁有的文件描述符的數量.
看來是模擬的并發數太多了,需要調整一下nginx.conf的并發設置數,(我的配置主機的內存2G,CPU為2.8G,)
復制代碼 代碼如下:
vi /etc/nginx/nginx.conf
events {
worker_connections 1024;
}
復制代碼 代碼如下:
events {
worker_connections 10240;
}
復制代碼 代碼如下:
* soft nofile 65535
* hard nofile 65535
復制代碼 代碼如下:
worker_rlimit_nofile 65535;
復制代碼 代碼如下:
kill -9 `ps -ef | grep php | grep -v grep | awk '{print $2}'`
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 100 -u www-data -f /usr/bin/php-cgi
killall -HUP nginx
新聞熱點
疑難解答
圖片精選