簡體   English   中英

Redis Windows,性能問題

[英]Redis Windows, Performance Issues

我在 Windows 上運行 redis,但遇到了一些性能問題。 機器是Xeon E5,32GM RAM和SSD,HW-Raid,Windows Server 2012。還有一些其他進程在運行,但它們並不重要,大部分時間都處於空閑狀態。

我經常注意到性能問題和操作超時,所以我啟動了“redis-cli --intrinsic-latency 100”。 輸出顯示最大延遲上升到 15000 微秒,我認為這很慢。

我還在運行內存分析器:r/w 性能不太好(5GB/秒),但我認為這不應該是瓶頸。 目前我完全不知道該嘗試什么。

你能給我一些如何找到性能問題的提示嗎?

沒有像 Windows 中的 Linux 那樣的“分叉”。 因此,當您轉儲 redis db 時,它可以“停止世界”以寫入磁盤“dump.rdb”。 好吧,他們確實實施了一種不會停止 redis 的“寫時復制”策略,它只是在轉儲時復制值(redis 客戶端仍然能夠從 redis 獲得響應)。 它在他們的版本日志中: https : //github.com/MSOpenTech/Redis

UNIX fork() API 有一個替代品,它使用內存映射文件模擬寫時復制行為。

這是 Windows 中 redis 的真正瓶頸,因為它是一個開銷並且更復雜(錯誤?)。 它在這里解釋: http : //blogs.msdn.com/b/interoperability/archive/2012/04/26/here-s-to-the-first-release-from-ms-open-tech-redis-on -windows.aspx

因此,您可以嘗試在 Linux 上運行一個 redis 來測試這是否是 Windows 端口的性能問題。 此外,您編寫的 dump.rdb 越多,開銷就越大(您可以更改頻率或嘗試完全禁用它以進行測試)。

最后,它也可能是網絡問題,您應該檢查它是否不是網絡規則/硬件問題(吞吐量不夠!電纜或東西不好,防火牆......)。 你的redis客戶端是在同一台硬件機器上嗎?

我一直在使用名為“Memurai”的 Redis 的 Windows 端口。 他們有一個免費的開發者版本。

現在,在一個自己的博客,他們聲稱,他們已經解決了fork()的問題。 請參閱下面的摘錄。

Memurai 性能對我來說似乎很好,即使啟用了持久性(RDB 和 AOF),盡管我自己沒有運行任何特定的測試。 有一個關於Memurai另一個博客PERF在這里

值得一試。

“在內部,Redis 使用 fork() 系統調用來執行異步寫入,但這不是 Memurai 的選項,因為 fork() 在 Windows 上不存在。相反,Memurai 使用 Windows 共享內存來實現開始-- fork() 的藝術版本,針對性能進行了微調,並且......”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM