最近在排查一個線上問題的時候,發現nginx日誌$upstream_addr字段居然返回了2個值,形如'192.168.1.1:80, api-servers',其中api-servers是指代的是你的upstream後面接group name,部分只有一個值'api-servers'。正常情況下,這個地方應該是類似“192.168.1.1:80”這樣,即一個請求落到一個後端服務。
nginx在啓動或者重新讀取配置的時候,爲了加快處理一些靜態數據集(比如server name, MIME types等,配置nginx的時候你應該遇到過),這東西放在一個緩存塊裏面(緩存在存儲機構中,介於內存和cpu寄存器間,離cpu比較近,現代cpu封裝再cpu裏面,L1,L2,L3什麼的,特點就是快,快過內存,慢於寄存器),這個緩存塊的大小由server_names_hash_bucket_size這個參數控制,物理cpu不一樣,默認大小不一樣,通常是2的次方,增加大小的時候,按照等級調整數值。