我有一個64G RAM的服務器,我正在運行一個腳本,它將csv文件中的一百萬個數據與數據庫進行比較。如果找到匹配項,則腳本僅在執行結束時輸出匹配數。每秒mongodb查詢
腳本跑時,需要3分鐘才能完成。測試5萬,11萬,3萬,5萬數據文件以及執行腳本的執行速率或速率是成比例的。服務器中有足夠的可用內存。下面粘貼腳本運行時的mongostat輸出。我的問題是,我相信該腳本每秒執行接近5000個查詢。我讀過很多文章,他們每秒平均得到5萬個查詢。這怎麼能實現?我的服務器運行Ubuntu,64位和24核心。
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn time
*0 3885 *0 *0 0 1|0 0 12g 24.2g 64m 0 db_list_restore:0.0% 0 0|0 1|0 380k 142k 2 03:09:26
*0 4188 *0 *0 0 1|0 0 12g 24.2g 68m 0 db_list_restore:0.0% 0 0|0 0|0 410k 153k 2 03:09:27
*0 4462 *0 *0 0 1|0 0 12g 24.2g 72m 0 db_list_restore:0.0% 0 0|0 0|0 440k 163k 2 03:09:28
*0 4401 *0 *0 0 1|0 0 12g 24.2g 76m 0 db_list_restore:0.0% 0 0|0 0|0 435k 161k 2 03:09:29
*0 4368 *0 *0 0 2|0 0 12g 24.2g 81m 0 db_list_restore:0.0% 0 0|0 1|0 432k 160k 2 03:09:30
*0 4416 *0 *0 0 1|0 0 12g 24.2g 84m 0 db_list_restore:0.0% 0 0|0 1|0 437k 161k 2 03:09:31
*0 4245 *0 *0 0 1|0 0 12g 24.2g 89m 0 db_list_restore:0.0% 0 0|0 0|0 420k 155k 2 03:09:32
*0 4561 *0 *0 0 1|0 0 12g 24.2g 93m 0 db_list_restore:0.0% 0 0|0 1|0 451k 167k 2 03:09:33
*0 3920 *0 *0 0 1|0 0 12g 24.2g 97m 0 db_list_restore:0.0% 0 0|0 0|0 388k 144k 2 03:09:34
*0 4307 *0 *0 0 2|0 0 12g 24.2g 105m 0 db_list_restore:0.0% 0 0|0 0|0 426k 157k 2 03:09:35
它可能是每秒50K查詢,但不是每個腳本,我會嘗試在查詢中使用更多的$,在一天結束時PHP cna只運行這麼快,一次做很多事情,再加上驅動程序是同步不async – Sammaye
感謝Sammaye,服務器端可以做什麼來加速性能? – user2709899
我不這麼認爲,那個mongostat很乾淨,我可能會錯過一些東西,但我認爲這只是PHP在一天結束時的速度 – Sammaye