測試tmpfs性能

創建一個tmpfs

mount tmpfs /data/app/www/tmpfs_www/ -t tmpfs -o size=50m

講php文件放到該目錄下,然後對比php執行效果,用xhprof獲取運行數據

使用tmpfs

關apc

 

 

Total Incl. Wall Time (microsec): 34

Total Incl. CPU (microsecs): 26

Total Incl. MemUse (bytes): 2311

Total Incl. PeakMemUse (bytes):2304

 

 

開apc

 

Total Incl. Wall Time (microsec): 26

Total Incl. CPU (microsecs): 16

Total Incl. MemUse (bytes): 786

Total Incl. PeakMemUse (bytes):798

 

不用tmpfs

關apc

Total Incl. Wall Time (microsec): 33

Total Incl. CPU (microsecs): 26

Total Incl. MemUse (bytes): 2310

Total Incl. PeakMemUse (bytes):2304

開apc

Total Incl. Wall Time (microsec): 22

Total Incl. CPU (microsecs): 16

Total Incl. MemUse (bytes): 786

Total Incl. PeakMemUse (bytes):798

得出結果,在只讀環境中,是否啓用tmpfs區別不大,應該和linux的內存管理方式有關

 

分別進行php讀取tmpfs和普通目錄的文件測試,

循環100w次file_get_contents:

在tmpfs下的文件

用時28s

在普通目錄下的文件

用時29s

100w次file_exists:

tmpfs下

19s

普通目錄

20s

100w次file_put_contents,幾十字節

在tmpfs下的文件

用時41s

在普通目錄下的文件

用時415s

100w次error_log寫入指定文件,幾十字節

在tmpfs下的文件

用時29s

在普通目錄下的文件

用時36s

結論,tmpfs在寫入數據時由於是內存操作,會非常快速度

發現file_put_contents和error_log在循環調用寫入文件的時候,性能差距非常大。。。

看了下兩個函數的源碼,都是利用 php_stream_write實現文件寫入,但file_put_contents的功能更多,源碼裏有對鎖,stream,數據類型的不同處理,可能是這些原因導致性能比error_log慢。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章