Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> Nginx提示:500 Internal Server Error錯誤的解決方法

Nginx提示:500 Internal Server Error錯誤的解決方法

日期:2017/2/8 10:10:24      編輯:關於服務器

本文章來給大家總結了大量關於導致nginx中提示500 Internal Server Error錯誤的原因總結與解決方法分析有需要了解的朋友可參考參考

現在越來越多的站點開始用 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;
 }

還是會出現上面問題,使用
 [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文件,加上兩句


* soft nofile 65535
 * hard nofile 65535

2 打開/etc/nginx/nginx.conf
 在worker_processes的下面增加一行

worker_rlimit_nofile 65535;

3 重新啟動nginx,重新載入設置

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的錯誤日志,也沒有發現500報錯的情況了。

4、有可能是數據庫問題我的在nginx日志php日志都沒有發現什麼問題, 最後發現數據庫訪問不了,修正後問題解決.

Copyright © Windows教程網 All Rights Reserved