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

來源:互聯網
上載者:User

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

  現在越來越多的網站開始用 Nginx ,("engine x") 是一個高效能的 HTTP 和反向 Proxy伺服器,也是一個 IMAP/POP3/SMTP Proxy 伺服器。 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日誌都沒有發現什麼問題, 最後探索資料庫訪問不了,修正後問題解決.

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。