現(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ù),相當(dāng)于同等環(huán)境下Apache的10倍。?
但很多人用 Nginx 的時候都會出現(xiàn) 500 錯誤,根據(jù)我使用的情況來看,很大一部分原因是 因為文件打開句柄太小有關(guān)。
在linux 下 使用這個命令增加進程打開的文件句柄。?
ulimit -SHn 51200?
默認只用1000 當(dāng)鏈接數(shù)小的時候看不出來,使用這種處理方法可以有效防止500錯誤出現(xiàn)。?
今天訪問網(wǎng)站的時候,偶爾會遇上500 Internal Server Error的錯誤提示頁面.?
查了相關(guān)資料認為是訪問過大,系統(tǒng)內(nèi)核進程受限才出現(xiàn)的.?
答案如下:?
$ ulimit -n?
11095?
程序限制只能打開11095個文件,ulimit命令是設(shè)置當(dāng)前用戶一個進程可擁有的文件描述符的數(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如果配置文件有語法錯誤,啟動的時候就會提示。當(dāng)配置rewrite的時候,有些規(guī)則處理不當(dāng)會出現(xiàn)500錯誤,請仔細檢查自己的rewrite規(guī)則。如果配置文件里有些變量設(shè)置不當(dāng),也會出現(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的下面增加一行
worker_rlimit_nofile 65535;
3 重新啟動nginx,重新載入設(shè)置
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
重啟后再看nginx的錯誤日志,也沒有發(fā)現(xiàn)500報錯的情況了。?
4、有可能是數(shù)據(jù)庫問題我的在nginx日志php日志都沒有發(fā)現(xiàn)什么問題, 最后發(fā)現(xiàn)數(shù)據(jù)庫訪問不了,修正后問題解決.
更多nginx提示:500 Internal Server Error錯誤的解決方法相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)