我已經在Windows Server 2012上設置了Piwik,並且我正在導入約20Gb的歷史日誌文件,分佈在10個不同的站點上。如何讓Piwik日誌導入程序在Windows/IIS上運行得更快?
我已經將每個站點的日誌文件合併爲幾個大文本文件,因爲通配符導入在Windows上是不可能的。
導入過程已經過去了很長時間,目前我只能在具有16Gb RAM的四核服務器上獲得大約25個記錄/秒。
我該如何加快速度?
我已經在Windows Server 2012上設置了Piwik,並且我正在導入約20Gb的歷史日誌文件,分佈在10個不同的站點上。如何讓Piwik日誌導入程序在Windows/IIS上運行得更快?
我已經將每個站點的日誌文件合併爲幾個大文本文件,因爲通配符導入在Windows上是不可能的。
導入過程已經過去了很長時間,目前我只能在具有16Gb RAM的四核服務器上獲得大約25個記錄/秒。
我該如何加快速度?
我發現加快Windows上的Piwik日誌導入的關鍵是- 記錄器設置。
Piwik文檔推薦與服務器上的CPU核心數量相同的記錄器,但我認爲這是假設CPU是瓶頸。在我的情況下,我只能獲得大約5%的CPU利用率,所以顯然還有其他一些東西阻礙了它。我懷疑這是我的PHP/IIS/MySQL設置,因爲Piwik前端也有點呆滯。
我添加--recorders = 64,現在我得到一個更可敬170條/秒。
雖然這仍然感覺有點慢,所以任何其他建議都會受到歡迎。
我沒有在Windows上運行,但我得到了一些我通過調整Mysql的InnoDB的設置得到了一些不錯的性能改進:
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 256K
thread_cache_size = 16
innodb_buffer_pool_size = 2048M
innodb_log_file_size = 512M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
sync_binlog = 0
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTED
不過要小心,某些設置影響安全。目前,我正在以每秒1000條記錄的速度在四核i5上使用8個刻錄機,這些刻錄機擁有16 GB RAM,並且只有一個用於Mysql的磁盤。
我的配置使用Apache 2.2與mod_fcgid使用命令行客戶端運行PHP。我還使用APC來緩存已編譯的PHP代碼。 Mysql是v5.5。所有在Ubuntu 12.10上運行。