nginx提示:500 Internal Server Error錯誤的解決方法
現(xiàn)在越來越多的站點開始用 Nginx ,("engine x") 是一個高性能的 HTTP 和反向代理服務(wù)器,也是一個 IMAP/POP3/SMTP 代理服務(wù)器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發(fā)的,它已經(jīng)在該站點運行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發(fā)布。
在高并發(fā)連接的情況下,Nginx是Apache服務(wù)器不錯的替代品。Nginx同時也可以作為7層負載均衡服務(wù)器來使用。根據(jù)測試結(jié)果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3萬以上的并發(fā)連接數(shù),相當于同等環(huán)境下Apache的10倍。
但很多人用 Nginx 的時候都會出現(xiàn) 500 錯誤,根據(jù)我使用的情況來看,很大一部分原因是 因為文件打開句柄太小有關(guān)。
在linux 下 使用這個命令增加進程打開的文件句柄。
ulimit -SHn 51200
默認只用1000 當鏈接數(shù)小的時候看不出來,使用這種處理方法可以有效防止500錯誤出現(xiàn)。
今天訪問網(wǎng)站的時候,偶爾會遇上500 Internal Server Error的錯誤提示頁面.
查了相關(guān)資料認為是訪問過大,系統(tǒng)內(nèi)核進程受限才出現(xiàn)的.
答案如下:
$ ulimit -n
11095
程序限制只能打開11095個文件,ulimit命令是設(shè)置當前用戶一個進程可擁有的文件描述符的數(shù)量.
看來是模擬的并發(fā)數(shù)太多了,需要調(diào)整一下nginx.conf的并發(fā)設(shè)置數(shù),(我的配置主機的內(nèi)存2G,CPU為2.8G,)
vi /etc/nginx/nginx.conf
events {
worker_connections 1024;
}
調(diào)整為
events {
worker_connections 10240;
}
還是會出現(xiàn)上面問題,使用
[root@qimutian nginx]# cat /proc/sys/fs/file-max
8192
文件系統(tǒng)最大可打開文件數(shù)
[root@qimutian nginx]# ulimit -n
1024
程序限制只能打開1024個文件
使用[root@qimutian nginx]# ulimit -n 8192調(diào)整一下
或者永久調(diào)整打開文件數(shù) 可在啟動文件/etc/rc.d/rc.local末尾添加(在/etc/sysctl.conf末尾添加fs.file-max=8192)
ulimit -n 8192
調(diào)整CentOS5文件打開數(shù)
使用ulimit -a一下,發(fā)現(xiàn)OPEN FILES不能默認超過1024,昨天的在進行壓力測試時,出現(xiàn)500錯誤,具體請查看
nginx出現(xiàn) 500 Internal Server Error
早上起來看一下,發(fā)現(xiàn)原來是通過如下方式調(diào)整
方法1 (永久調(diào)整)
vi /etc/security/limits.conf
在文件末加上:
* soft nofile 8192
* hard nofile 20480
同時vi /etc/sysctl.conf末尾添加
fs.file-max=8192
重新啟動,在使用ulimit -n查看的數(shù)已經(jīng)是8192
方法2 (臨時用)
直接在終端輸入 ulimit -n 8192 按回車就ok了
500 Internal Server Error錯誤補充:
1、硬盤空間滿了
使用 df -k 查看硬盤空間是否滿了。清理硬盤空間就可以解決500錯誤。nginx如果開啟了access log,在不需要的情況下,最好關(guān)閉access log。access log會占用大量硬盤空間。
2、nginx配置文件錯誤
這里不是指語法錯誤,nginx如果配置文件有語法錯誤,啟動的時候就會提示。當配置rewrite的時候,有些規(guī)則處理不當會出現(xiàn)500錯誤,請仔細檢查自己的rewrite規(guī)則。如果配置文件里有些變量設(shè)置不當,也會出現(xiàn)500錯誤,比如引用了一個沒有值的變量。
3、如果上面的問題都不存在可能是模擬的并發(fā)數(shù)太多了,需要調(diào)整一下nginx.conf的并發(fā)設(shè)置數(shù)
解決方法是:
1 打開/etc/security/limits.conf文件,加上兩句
* soft nofile 65535
* hard nofile 65535
2 打開/etc/nginx/nginx.conf
在worker_processes的下面增加一行
3 重新啟動nginx,重新載入設(shè)置
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 100 -u www-data -f /usr/bin/php-cgi
killall -HUP nginx
重啟后再看nginx的錯誤日志,也沒有發(fā)現(xiàn)500報錯的情況了。
4、有可能是數(shù)據(jù)庫問題我的在nginx日志php日志都沒有發(fā)現(xiàn)什么問題, 最后發(fā)現(xiàn)數(shù)據(jù)庫訪問不了,修正后問題解決.
相關(guān)文章
添加Nginx代理配置只允許內(nèi)部IP訪問的實現(xiàn)方法
在本篇文章里小編給大家整理的是一篇關(guān)于添加Nginx代理配置只允許內(nèi)部IP訪問的實現(xiàn)方法的文章,有需要的朋友們可以學(xué)習(xí)下。2019-10-10開啟Nginx時端口被占用提示:Address already in use
這篇文章主要介紹了開啟Nginx時端口被占用提示:Address already in use的解決方法,文中通過兩種方法給大家介紹了Nginx的啟動、停止與重啟 的操作方法 ,需要的朋友可以參考下2018-09-09Nexus使用nginx代理實現(xiàn)支持HTTPS協(xié)議
這篇文章主要介紹了Nexus使用nginx代理實現(xiàn)支持HTTPS協(xié)議,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05