乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【匯總】nginx 報錯匯總

       WindySky 2016-04-13

       

      ------------------- [warn] conflicting server name "192.168.1.86" on 0.0.0.0:80, ignored


       [warn]: conflicting server name “abc.com” on 0.0.0.0:80, ignored

      出現(xiàn)這個錯誤一般是由于技術(shù)員的粗心造成的,原因是相同的域名abc.com出現(xiàn)兩次甚至是多次

      一般在把配置文件分離出來寫時候會容易犯。技術(shù)員經(jīng)常復(fù)制配置文件,然后忘記修改里面的內(nèi)容

      解決方法就是把所有配置文件查一遍看是否有重復(fù)出現(xiàn)的。

      或者查詢哪個配置文件中有abc.com

      WINDOW下用搜索

      LINUX下用grep "abc.com"

       

       

      -------------------nginx_error.log

       

       

      2011/05/27 21:36:14 [error] 6921#0: *21138 upstream timed out (110: Connection timed out) while connecting to upstream, client: 183.39.194.179, server: www.***.com, request: "GET /ajax/userinit?1306503433302 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.***.com", referrer: "http://www.***.com/view/200000"

       

       

      從日志的表示來看應(yīng)該不是nginx的問題,而是 fast-cgi 執(zhí)行超時沒有及時返回數(shù)據(jù)到ngnix的問題. 可web和數(shù)據(jù)庫負(fù)載都不高,不應(yīng)該是

      程序超時的問題. 查資料也沒有找到原因,網(wǎng)上于幾個人說遇到同樣問題,也沒有好的解決方案. 后來仔細(xì)分析日志,發(fā)現(xiàn)出現(xiàn)錯誤的日志的時間都是大于當(dāng)前時間 ,這點很奇怪,難道是系統(tǒng)時間的問題? 后來再仔細(xì)查資料,才找到原因. 原來是 centos 的一個內(nèi)核bug, 調(diào)用gettimeofday()這個函數(shù)的時候會比當(dāng)前時間快4398秒 .  具體原因是因為多核cpu,各核的TSC不一樣造成的.  看來 fast-cgi 應(yīng)該是調(diào)用了這個函數(shù)的.

      解決方案是升級內(nèi)核..  相信很多和我一樣不是專業(yè)sa的兄弟對升級內(nèi)核之類的事情還是比較犯怵的,不過不用擔(dān)心有一個不用升級內(nèi)核的解決方案. 在不升級kernel的情況下,可以考慮修改time source,來解決。修改kernel option。

       

      vi /boot/grub/grub.conf 增加如下紅色的參數(shù), 重啟后問題解決
       kernel **** ro root=*****  rhgb quiet clock=pit

       

       

       

       

      ============================= NGINX 啟動時報錯“[warn]: conflicting server name “xxx.com” on 0.0.0.0:80, ignored”

       

       

      include vhost/*.conf;

      一般是由于技術(shù)人員配置時使用Include 語句,使用了nginx.conf之外的配置文件,如果兩個配置文件重復(fù)配置了xxx.com就會出現(xiàn)這個錯誤。

       

       

       

       

       

      =======================今天PHP的導(dǎo)出EXCEL里面突然出現(xiàn)超時


      雖然我在PHP腳本里面寫了set_time_limit(0);
      但是他還是出現(xiàn)那種50x錯誤
      查看日志文件后發(fā)現(xiàn)里面寫著:
      upstream timed out (110: Connection timed out) while reading response
      header from upstream

      解決辦法如下:
      編輯ngnix對應(yīng)的虛擬主機(jī)配置文件
      fastcgi_read_timeout 后面的時間可以根據(jù)自己的情況設(shè)置,默認(rèn)是60秒
              location ~ .+\.php?$
              {
                  fastcgi_pass          127.0.0.1:1025;
              #   fastcgi_pass          unix:/usr/local/webserver/fastcgi/sock/fastcgi.sock;
                  fastcgi_index         index.php;
              #   For Time out                這句是注釋,可以不寫
                  fastcgi_read_timeout 500;
                  include               fastcgi_params;
              }

       


      =======================nginx502 Bad Gateway

       

      Nginx 502 Bad Gateway的含義是請求的PHP-CGI已經(jīng)執(zhí)行,但是由于某種原因(一般是讀取資源的問題)
      沒有執(zhí)行完畢而導(dǎo)致PHP-CGI進(jìn)程終止。

      Nginx 502錯誤的原因比較多,是因為在代理模式下后端服務(wù)器出現(xiàn)問題引起的。

      這些錯誤一般都不是nginx本身的問題,一定要從后端找原因!
      php-cgi進(jìn)程數(shù)不夠用、php執(zhí)行時間長、或者是php-cgi進(jìn)程死掉,都會出現(xiàn)502錯誤
      502錯誤最通常的出現(xiàn)情況就是后端主機(jī)當(dāng)機(jī)



      vim /usr/local/webserver/php/etc/php-fpm.conf

      一般來說Nginx 502 Bad Gateway和php-fpm.conf的設(shè)置有關(guān),
      php-fpm.conf有兩個至關(guān)重要的參數(shù),一個是”max_children”,另一個是”request_terminate_timeout” ,但是這個值不是通用的,而是需要自己計算的。

      計算的方式如下:

      如果你的服務(wù)器性能足夠好,且寬帶資源足夠充足,PHP腳本沒有系循環(huán)或BUG的話你可以直接將”request_terminate_timeout”設(shè)置成0s。0s的含義是讓PHP-CGI一直執(zhí)行下去而沒有時間限制。而如果你做不到這一點,也就是說你的PHP-CGI可能出現(xiàn)某個BUG,或者你的寬帶不夠充足或者其他的原因?qū)е履愕腜HP-CGI能夠假死那么就建議你給”request_terminate_timeout”賦一個值,這個值可以根據(jù)你服務(wù)器的性能進(jìn)行設(shè)定。一般來說性能越好你可以設(shè)置越高,20分鐘 -30分鐘都可以。由于我的服務(wù)器PHP腳本需要長時間運行,有的可能會超過10分鐘因此我設(shè)置了900秒,這樣不會導(dǎo)致PHP-CGI死掉而出現(xiàn)502 Bad gateway這個錯誤。

      而”max_children”這個值又是怎么計算出來的呢?這個值原則上是越大越好,php-cgi的進(jìn)程多了就會處理的很快,排隊的請求就會很少。設(shè)置”max_children”也需要根據(jù)服務(wù)器的性能進(jìn)行設(shè)定,一般來說一臺服務(wù)器正常情況下每一個php-cgi所耗費的內(nèi)存在20M左右,因此我的”max_children”我設(shè)置成40個,20M*40=800M也就是說在峰值的時候所有PHP-CGI所耗內(nèi)存在800M以內(nèi),低于我的有效內(nèi)存1Gb。而如果我的”max_children”設(shè)置的較小,比如5-10個,那么 php-cgi就會“很累”,處理速度也很慢,等待的時間也較長。如果長時間沒有得到處理的請求就會出現(xiàn)504 Gateway Time-out這個錯誤,而正在處理的很累的那幾個php-cgi如果遇到了問題就會出現(xiàn)502 Bad gateway這個錯誤。






      ----------------一般解決辦法

      遇到502問題,可以優(yōu)先考慮按照以下兩個步驟去解決。

      1、查看當(dāng)前的PHP FastCGI進(jìn)程數(shù)是否夠用:

      netstat -anpo | grep "php-cgi" | wc -l

      如果實際使用的“FastCGI進(jìn)程數(shù)”接近預(yù)設(shè)的“FastCGI進(jìn)程數(shù)”,那么,說明“FastCGI進(jìn)程數(shù)”不夠用,需要增大。


      # ps aux | grep php-cgi |wc -l
      130

      # netstat -anpo | grep "php-cgi" | wc -l
      450

      # netstat -anpo | grep "php-cgi" |more
      tcp        0      0 192.168.12.201:52719        192.168.12.203:13002        ESTABLISHED 27687/php-cgi       off (0.00/0/0)
      tcp        0      0 192.168.12.201:52713        192.168.12.203:13002        ESTABLISHED 27685/php-cgi       off (0.00/0/0)
      tcp        0      0 192.168.12.201:52694        192.168.12.203:13002        ESTABLISHED 27682/php-cgi       off (0.00/0/0)
      tcp        0      0 192.168.12.201:52688        192.168.12.203:13002        ESTABLISHED 27681/php-cgi       off (0.00/0/0)
      tcp        0      0 192.168.12.201:52701        192.168.12.203:13002        ESTABLISHED 27683/php-cgi       off (0.00/0/0)

      重啟后#   netstat -anpo | grep "php-cgi" | wc -l
      46


      [root@jushanweb1 ~]#  netstat -anpo | grep "nginx" | wc -l
      17
      [root@jushanweb1 ~]#  ps aux | grep nginx |wc -l
      10






      2、部分PHP程序的執(zhí)行時間超過了Nginx的等待時間,可以適當(dāng)增加nginx.conf配置文件中FastCGI的timeout時間,例如:

      ...... http { ...... fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; ...... } ......



      php.ini中memory_limit設(shè)低了會出錯,修改了php.ini的memory_limit為128M,重啟nginx,發(fā)現(xiàn)好了,原來是PHP的內(nèi)存不足了。


      ---------------臨時解決辦法:

      綜上所述,Nginx提示502和504錯誤的臨時解決辦法是:

      1、調(diào)整php-fpm.conf的相關(guān)設(shè)置:

      <value name=”max_children”>32</value>

      <value name=”request_terminate_timeout”>30s</value>  fast-cgi的執(zhí)行腳本時間





      --------------------------終級解決方案:

      標(biāo)題3中所示的解決方案只能臨時解決問題,而如果網(wǎng)站的訪問量確實非常非常大,而Nginx+FastCGI只能對處理瞬間或短時間內(nèi)的高并發(fā)有很好的效果,所以目前唯一的終極解決方案是:定時平滑重啟php-cgi。

      具體配置如下:

      1、寫一個非常簡單的腳本:

      #vi /home/www/scripts/php-fpm.sh

      內(nèi)容如下:

      #!/bin/bash
      # This script run at */1
      /usr/local/php/sbin/php-fpm reload

      2、將腳本添加至計劃任務(wù):

      #crontab -e

      內(nèi)容如下:

      */1 * * * * /home/www/scripts/php-fpm.sh

      注:為了省事起見,也可以不寫腳本,直接在crontab里寫入php-fpm的平滑重啟命令。

       

       

       

      -----------------

      Nginx 502錯誤情況1:
      網(wǎng)站的訪問量大,而php-cgi的進(jìn)程數(shù)偏少。
      針對這種情況的502錯誤,只需增加php-cgi的進(jìn)程數(shù)。具體就是修改/usr/local/php/etc/php-fpm.conf 文件,將其中的max_children值適當(dāng)增加。這個數(shù)據(jù)要依據(jù)你的VPS或獨立服務(wù)器的配置進(jìn)行設(shè)置。一般一個php-cgi進(jìn)程占20M內(nèi)存,你可以自己計算下,適量增多。
      /usr/local/php/sbin/php-fpm restart 然后重啟一下.

       

      Nginx 502錯誤情況2:
      CPU占用率、內(nèi)存占用率非常高,遭到CC攻擊.
      解決方法請參考:LinuxVPS簡單解決CC攻擊

      Nginx 502錯誤情況3:
      CPU占用率不高,內(nèi)存溢出。
      檢查一下網(wǎng)站程序有沒有問題?一般小偷站點常常會出現(xiàn)內(nèi)存溢出。
      檢查一下/var/log/目錄下的日志,看看是不是有人爆破SSH和FTP端口?
      SSH、FTP遭到窮舉也會占用大量內(nèi)存。是的話改掉SSH端口和FTP端口即可。

       

       

       

       

      =======================nginx 504 time out

       

       

       

      Nginx 504 Gateway Time-out的含義是所請求的網(wǎng)關(guān)沒有請求到,
      簡單來說就是沒有請求到可以執(zhí)行的PHP-CGI。

      Nginx 504 Gateway Time-out則是與nginx.conf的設(shè)置有關(guān)。

      504 Gateway Time-out問題常見于使用nginx作為web server的服務(wù)器的網(wǎng)站


      一般看來, 這種情況可能是由于nginx默認(rèn)的fastcgi進(jìn)程響應(yīng)的緩沖區(qū)太小造成的,
      這將導(dǎo)致fastcgi進(jìn)程被掛起, 如果你的fastcgi服務(wù)對這個掛起處理的不好,
      那么最后就極有可能導(dǎo)致504 Gateway Time-out
      現(xiàn)在的網(wǎng)站, 尤其某些論壇有大量的回復(fù)和很多內(nèi)容的, 一個頁面甚至有幾百K
      默認(rèn)的fastcgi進(jìn)程響應(yīng)的緩沖區(qū)是8K, 我們可以設(shè)置大點
      在nginx.conf里, 加入:

      fastcgi_buffers 8 128k

      這表示設(shè)置fastcgi緩沖區(qū)為8×128k
      當(dāng)然如果您在進(jìn)行某一項即時的操作, 可能需要nginx的超時參數(shù)調(diào)大點, 例如設(shè)置成60秒:

      send_timeout 60;

      我只是調(diào)整了這兩個參數(shù), 結(jié)果就是沒有再顯示那個超時, 可以說效果不錯, 但是也可能是由于其他的原因, 目前關(guān)于nginx的資料不是很多, 很多事情都需要長期的經(jīng)驗累計才有結(jié)果, 期待您的發(fā)現(xiàn)哈!


      ---------------解決辦法:

      調(diào)整nginx.conf的相關(guān)設(shè)置:

      fastcgi_connect_timeout 600;
      fastcgi_send_timeout 600;
      fastcgi_read_timeout 600;
      fastcgi_buffer_size 256k;
      fastcgi_buffers 16 256k;
      fastcgi_busy_buffers_size 512k;
      fastcgi_temp_file_write_size 512k;

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多