0
從c文件每秒記錄3k事件的最佳選擇是什麼?以下是我想到的選項。無法確定哪個解決方案可靠,故障點更少,可靠性更高,延遲更少。從c程序每秒記錄3000個事件
使用消息服務器轉發的事件,因爲它們發生
使用系統日誌的記錄
使用UNIX管道
使用記錄劑一樣流利,將事件發送到分析服務器
本地寫入日誌文件,然後定期輪換旋轉到分析服務器使用類似rsync
從c文件每秒記錄3k事件的最佳選擇是什麼?以下是我想到的選項。無法確定哪個解決方案可靠,故障點更少,可靠性更高,延遲更少。從c程序每秒記錄3000個事件
使用消息服務器轉發的事件,因爲它們發生
使用系統日誌的記錄
使用UNIX管道
使用記錄劑一樣流利,將事件發送到分析服務器
本地寫入日誌文件,然後定期輪換旋轉到分析服務器使用類似rsync
嘗試系統日誌。沒有理由讓它太複雜。使用syslog-ng,您可以通過UDP進行本地日誌記錄,然後設置本地syslogd以通過TCP將所有內容轉發到中央系統日誌服務器。您可能需要在中央系統日誌服務器上運行無fsync以跟上該負載(但先測試),但可以通過將所有內容轉發到兩臺獨立的計算機來緩解這一問題。這爲您提供本地異步性能和足夠的可靠性,使您幾乎不會丟失事件。
我做的另一個選擇是將事件記錄到Redis,Riak或其他一些nosql數據存儲中(我通常不會推薦它們用於任何複雜事件,但事件記錄正好在他們的小巷中)。設置冗餘鏡像,他們應該能夠保持每秒超過3k個事件。
@JoachimPileborg呃?除非記錄的事件每個事件產生幾個kB數據,否則你必須在每個事件之後進行fsync,否則我根本看不到這是多麼大的數量。我在這裏有系統日誌機器,每秒處理超過10k行,並且它很容易跟上(通過UDP系統日誌記錄到通過TCP轉發到兩個單獨系統日誌收集器機器的服務器上的本地系統日誌守護進程,因此可以在沒有fsync的情況下完成)。這是在旋轉磁盤上。通過合作伙伴使用類似設置的SSD,他們可以在夜間保持25k lines/s + fsync的日誌旋轉速度。 – Art
謝謝。欣賞即時答覆。 –