我想以高訪問率記錄訪問我的網站的文件。我可以每秒執行多少次寫入日誌文件?每秒文件寫入次數
每秒文件寫入次數
回答
不這樣做,請改用Google Analytics。你最終會遇到許多問題,試圖打開文件,寫信給他們,關閉他們,等等。當您覆蓋尚未提交的數據時會出現問題等。
如果您需要自己的本地解決方案(在專用網絡內等),您可以查看AWStats這樣的選項,你的日誌文件。
或者只是分析Apache訪問日誌文件。例如使用AWStats。
如果您無法使用Google Analytics,那您爲什麼不使用您的網絡服務器現有的日誌記錄系統?如果您使用的是真正的網絡服務器,則幾乎可以肯定它是一種已針對最大吞吐量進行了優化的日誌記錄機制。
你的問題是不可能在所有其他方面回答。可能的寫入次數由硬件,操作系統和來自其他正在運行的軟件的爭用來控制。
如果您的硬盤驅動器可以寫入40 MB/s,並且您的日誌文件行大約爲。 300字節的長度,我假設你可以寫每秒140000 HTTP請求到你的日誌文件,如果你保持打開狀態。
無論如何,你不應該自己做,因爲大多數web服務器已經寫入日誌文件,他們知道如何做到這一點,如何在達到最大限制時滾動文件以及如何格式化日誌線根據一些着名的模式。
文件訪問非常昂貴,特別是在寫入時。我建議將它們保存到RAM(使用任何緩存方法最適合您)並定期將結果寫入磁盤。
您也可以爲此使用數據庫。喜歡的東西:
UPDATE stats SET hits = hits + 1
嘗試了幾個不同的解決方案,基準性能,並實現兩者的作品足夠快以最少的資源使用情況。
我認爲使用關係數據庫來達到這個目的將會是過分的,並且可能會導致一些嚴重的性能下降。 – 2010-01-04 18:41:34
看到我的意見,我不想每次更新數據庫 – Ilya 2010-01-04 18:44:32
如果使用Apache,我建議使用rotatelogs公用程序作爲標準套件的一部分。
我們使用它來允許每天輪換服務器註銷,而無需停止和啓動服務器。注:使用新的「||」語法時聲明日誌指令。
我參與的網站是互聯網上最大的網站之一,在長時間內以每秒數百萬的速度達到峯值。
編輯:我忘了說網站使用標準的Apache日誌指令,我們根本不需要定製Apache日誌代碼。
編輯:順便說一句,除非你真的需要它,不要記錄服務的字節,因爲這會導致圍繞午夜邊界的各種問題。
我怎麼能解析它? – Ilya 2010-01-04 18:47:43
@Ilya,參見@ EarthMind關於awstats初始起點的建議。我們使用在專用套件機器上運行的定製統計分析器,每天對日誌文件進行各種分析,例如, Sun5240的。分析器以C和Perl腳本編寫的可執行文件混合實現。該分析過程每天至少需要十個小時才能運行! – 2010-01-04 18:52:51
直到您實際將數據刷新到磁盤時,文件寫入並不昂貴。通常你的操作系統會積極地緩存一些東西,所以如果你不想手動嘗試數據(當然,如果發生崩潰,你可能會丟失最新的日誌條目),你可以獲得非常好的寫入性能。
但是,另一個問題是文件I/O不一定是線程安全的,並且從多個線程或進程寫入同一文件(如果我們正在討論Web應用程序,可能會發生這種情況)可能會產生錯誤結果:例如,丟失或重複或混合的日誌行。
好的,你能告訴我什麼? – Ilya 2010-01-04 19:02:18
線程安全性正是我想知道的類似問題。 – 2014-07-22 11:32:34
讓Apache做到這一點;做後端的分析工作。
- 1. 連續寫入文件的最佳方式(每秒50次)
- 2. 數據庫每秒寫入
- 3. 每秒運行多個函數,將結果寫入文件
- 4. coreservicesd/lssave每30秒寫一次
- 5. Python:多次寫入文件,無需每次寫入都打開/關閉
- 6. 使用std :: chrono :: high_resolution_clock每秒寫入一幀30次
- 7. 將發生次數寫入文件
- 8. Ada:多次寫入文件
- 9. 數據庫系統用於每秒多次讀寫
- 10. 如何在每次按「寫入」按鈕時將字符串行寫入文件
- 11. 寫入小文件或一次寫入文件會更好嗎?
- 12. 每隔X行讀寫一次文件
- 13. SaltStack - 每次運行都會寫入受管理的文件,如果只有更新文件才寫入文件?
- 14. 每隔10秒重新載入一次文本文件的內容
- 15. ASP.NET C#Webservice檢索數據並寫入數據庫每n秒
- 16. django 1.3 logging timedrotatingfilehandler在每次寫入時截斷文件
- 17. 每次將新字符串寫入一個文件中
- 18. 如何衡量「每秒查詢次數」?
- 19. 每秒多少次函數調用?
- 20. 每30秒調用一次函數
- 21. 如何打印每秒迭代次數?
- 22. C#System.Windows.Form.Control.MouseClick - 每秒增加點擊次數?
- 23. 每5秒調用一次函數角
- 24. 文件每次
- 25. 我如何編寫「每秒事件」PerformanceCounter?
- 26. C++多次將文本寫入文件
- 27. ACTION_TIME_TICK每秒播出一次?
- 28. ViewModel每秒更新一次?
- 29. c# - 從二進制日誌文件讀取,每12秒更新一次數據,每6秒鐘
- 30. Python每次將某個內容寫入文件時,將計數器增加1
您能否澄清Google Analytics未提供的其他所需功能? – SqlRyan 2010-01-04 18:37:00
@伊利亞,你在用什麼服務器? Apache的? – 2010-01-04 18:40:44
好吧,我會盡力詳細解釋我需要什麼。我有廣告網絡,我想將橫幅節目登錄到文件,然後每5分鐘將它們上傳到MySQL。橫幅顯示有一個約50每秒 – Ilya 2010-01-04 18:42:24