755
技術社區[雲棲]
Redis開發運維實踐上線部署規劃之服務器部署位置
5.3 服務器部署位置
盡可能把client和server部署在同一台機器上,比如都部署在app server,或者一個網段中,減少網絡延遲對於redis的影響。
如果是同一台機器,又想榨幹redis性能可以考慮采用UNIX domain sockets配置方式,配置方式如下
這樣的配置方式在沒有大量pipeline下會有一定性能提升,具體請參見https://redis.io/topics/benchmarks:
另外,對於混合部署即redis和應用部署在同一台服務器上,那麼可能會出現如下的情況:
出現瞬時 Redis 大量連接和處理超時,應用業務線程被阻塞,導致服務拒絕,過一段時間可能又自動恢複了。這種瞬時故障非常難抓現場,一天來上幾發就會給人業務不穩定的感受,而一般基礎機器指標的監控周期在分鍾級。瞬時故障可能發生在監控的采集間隙,所以隻好上腳本在秒級監控日誌,發現瞬時出現大量 Redis 超時錯誤,就收集當時應用的 JVM 堆棧、內存和機器 CPU Load 等各項指標。終於發現瞬時故障時刻 Redis 機器 CPU Load 出現瞬間飆升幾百的現象,應用和 Redis 混合部署時應用可能瞬間搶占了全部 CPU 導致 Redis 沒有 CPU 資源可用。而應用處理業務的邏輯又可能需要訪問 Redis,而 Redis 又沒有 CPU 資源可用導致超時,這不就像一個死鎖麼。搞清楚了原因其實解決方法也簡單,就是分離應用和 Redis 的部署,各自資源隔離
+
因此在混合部署下要對極限性能進行監控,提前將可能出現性能問題的應用遷移出來。
最後更新:2017-05-08 10:31:37