在高並發連線的情況下,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;
}
worker_connections 10240;
}
[root@qimutian nginx]# cat /proc/sys/fs/file-max
8192
檔案系統最大可開啟檔案數
[root@qimutian nginx]# ulimit -n
1024
程式限制只能開啟1024個檔案
使用[root@qimutian nginx] # ulimit -n 8192調整一下
或永久調整開啟檔案數可在啟動檔案/etc/rc.d/rc.local末尾新增(在/etc/sysctl.conf末端新增fs.file-max=8192)
ulimit -n 8192
調整centos5檔案開啟數
使用ulimit -a一下,發現open files不能預設超過1024,昨天的在進行壓力測試時,出現500錯誤,具體請查看
nginx出現500 internal server error
早上起來看一下,發現原來是透過以下方式調整
方法1 (永久調整)
vi /etc/security/limits.conf
在檔案結尾加上:
* soft nofile 8192
* hard nofile 20480
同時vi /etc/sysctl.conf結尾加上
fs.file-max=8192
重新啟動,在使用ulimit -n查看的數字已經是8192
方法2 (暫時用)
直接在終端機輸入ulimit -n 8192 按回車就ok了
500 internal server error錯誤補充:# 1.硬碟空間滿了
使用df -k 查看硬碟空間是否滿了。清理硬碟空間就可以解決500錯誤。 nginx如果開啟了access log,在不需要的情況下,最好關閉access log。 access log會佔用大量硬碟空間。
2、nginx設定檔錯誤
這裡不是指語法錯誤,nginx如果設定檔有語法錯誤,啟動的時候就會提示。當配置rewrite的時候,有些規則處理不當會出現500錯誤,請仔細檢查自己的rewrite規則。如果設定檔裡有些變數設定不當,也會出現500錯誤,例如引用了一個沒有值的變數。
3、如果上面的問題都不存在可能是模擬的並發數太多了,需要調整一下nginx.conf的並發設定數
解決方法是:
1 開啟/etc/security/limits .conf文件,加上兩個句子
* hard nofile 65535
在worker_processes的下面增加一行
/ usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -c 100 -u www-data -f /usr/bin/php-cgi
killall -hup nginx
4、有可能是資料庫問題我的在nginx日誌php日誌都沒有發現什麼問題, 最後發現資料庫存取不了,修正後問題解決.
以上是nginx提示500 Internal Server Error錯誤怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!