錯誤資訊

[root@ip-xxx-xx-xx-xx th]# /etc/init.d/nginx reload
nginx: [emerg] could not build the server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 128
nginx: configuration file /etc/nginx/nginx.conf test failed

解決辦法

在/usr/local/nginx/conf/nginx.conf中http{}加入這樣一句話

 server_names_hash_max_size 512;

使用 sudo  /usr/local/nginx/sbin/nginx -t對nginx設定檔進行檢查,如果還提示

could not build the server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 64

則再把 server_names_hash_max_size升值

 server_names_hash_max_size 1024;

重啟後測試正常

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

錯誤原因

保存伺服器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。參數hash bucket size總是等於hash表的大小,並且是一路處理器緩存大小的倍數。在減少了在記憶體中的存取次數後,使在處理器中加速查找hash表鍵值成為可能。如果 hash bucket size等於一路處理器緩存的大小,那麼在查找鍵的時候,最壞的情況下在記憶體中查找的次數為2。第一次是確定存儲單元的位址,第二次是在存儲單元中查找鍵值。因此,如果Nginx給出需要增大 hash max size 或 hash bucket size的提示,那麼首要的是增大前一個參數的大小.

具體可參見官方文檔:http://wiki.nginx.org/Optimizations

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料