現(xiàn)在越來(lái)越多的站點(diǎn)開始用 Nginx ,("engine x") 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點(diǎn)開發(fā)的,它已經(jīng)在該站點(diǎn)運(yùn)行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發(fā)布。?
在高并發(fā)連接的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品。Nginx同時(shí)也可以作為7層負(fù)載均衡服務(wù)器來(lái)使用。根據(jù)測(cè)試結(jié)果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3萬(wàn)以上的并發(fā)連接數(shù),相當(dāng)于同等環(huán)境下Apache的10倍。?
但很多人用 Nginx 的時(shí)候都會(huì)出現(xiàn) 500 錯(cuò)誤,根據(jù)我使用的情況來(lái)看,很大一部分原因是 因?yàn)槲募蜷_句柄太小有關(guān)。
在linux 下 使用這個(gè)命令增加進(jìn)程打開的文件句柄。?
ulimit -SHn 51200?
默認(rèn)只用1000 當(dāng)鏈接數(shù)小的時(shí)候看不出來(lái),使用這種處理方法可以有效防止500錯(cuò)誤出現(xiàn)。?
今天訪問網(wǎng)站的時(shí)候,偶爾會(huì)遇上500 Internal Server Error的錯(cuò)誤提示頁(yè)面.?
查了相關(guān)資料認(rèn)為是訪問過大,系統(tǒng)內(nèi)核進(jìn)程受限才出現(xiàn)的.?
答案如下:?
$ ulimit -n?
11095?
程序限制只能打開11095個(gè)文件,ulimit命令是設(shè)置當(dāng)前用戶一個(gè)進(jìn)程可擁有的文件描述符的數(shù)量.?
看來(lái)是模擬的并發(fā)數(shù)太多了,需要調(diào)整一下nginx.conf的并發(fā)設(shè)置數(shù),(我的配置主機(jī)的內(nèi)存2G,CPU為2.8G,)?
vi /etc/nginx/nginx.conf events { worker_connections 1024; }
調(diào)整為
events { worker_connections 10240; }
還是會(huì)出現(xiàn)上面問題,使用
[root@qimutian nginx]# cat /proc/sys/fs/file-max
8192
文件系統(tǒng)最大可打開文件數(shù)
[root@qimutian nginx]# ulimit -n
1024
程序限制只能打開1024個(gè)文件
使用[root@qimutian nginx]# ulimit -n 8192調(diào)整一下
或者永久調(diào)整打開文件數(shù) 可在啟動(dòng)文件/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不能默認(rèn)超過1024,昨天的在進(jìn)行壓力測(cè)試時(shí),出現(xiàn)500錯(cuò)誤,具體請(qǐng)查看
nginx出現(xiàn) 500 Internal Server Error
早上起來(lái)看一下,發(fā)現(xiàn)原來(lái)是通過如下方式調(diào)整
方法1 (永久調(diào)整)
vi /etc/security/limits.conf
在文件末加上:
* soft nofile 8192
* hard nofile 20480
同時(shí)vi /etc/sysctl.conf末尾添加
fs.file-max=8192
重新啟動(dòng),在使用ulimit -n查看的數(shù)已經(jīng)是8192
方法2 (臨時(shí)用)
直接在終端輸入 ulimit -n 8192 按回車就ok了
500 Internal Server Error錯(cuò)誤補(bǔ)充:
1、硬盤空間滿了
使用 df -k 查看硬盤空間是否滿了。清理硬盤空間就可以解決500錯(cuò)誤。nginx如果開啟了access log,在不需要的情況下,最好關(guān)閉access log。access log會(huì)占用大量硬盤空間。
2、nginx配置文件錯(cuò)誤
這里不是指語(yǔ)法錯(cuò)誤,nginx如果配置文件有語(yǔ)法錯(cuò)誤,啟動(dòng)的時(shí)候就會(huì)提示。當(dāng)配置rewrite的時(shí)候,有些規(guī)則處理不當(dāng)會(huì)出現(xiàn)500錯(cuò)誤,請(qǐng)仔細(xì)檢查自己的rewrite規(guī)則。如果配置文件里有些變量設(shè)置不當(dāng),也會(huì)出現(xiàn)500錯(cuò)誤,比如引用了一個(gè)沒有值的變量。
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 重新啟動(dòng)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的錯(cuò)誤日志,也沒有發(fā)現(xiàn)500報(bào)錯(cuò)的情況了。?
4、有可能是數(shù)據(jù)庫(kù)問題我的在nginx日志php日志都沒有發(fā)現(xiàn)什么問題, 最后發(fā)現(xiàn)數(shù)據(jù)庫(kù)訪問不了,修正后問題解決.
更多nginx提示:500 Internal Server Error錯(cuò)誤的解決方法相關(guān)文章請(qǐng)關(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)
