国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opcache的檢測文件更新的小坑

you_De / 1356人閱讀

摘要:昨晚線上出故障,緊急處理切換容災后緩解了故障,解決故障后從容災切換回正式服務時發現文件更新無效,重啟后才生效。查看昨晚的日志,更新不生效持續時間遠遠大于秒,所以這個檢測間隔時間的問題可以了,我們繼續。

昨晚線上出故障,緊急處理切換容災后緩解了故障,解決故障后從容災切換回正式服務時發現PHP文件更新無效,重啟FPM后才生效。下面記錄復盤追查的過程。

因為是PHP文件更新不生效,所以馬上懷疑到opcache上面,到線上看了一眼php.ini,果然使用了opcache,并且檢測間隔時間設置為60秒。查看昨晚的日志,更新不生效持續時間遠遠大于60秒,所以這個檢測間隔時間的問題可以PASS了,我們繼續。

在線上環境查看更新的文件和日志中的時間的時候,突然發現PHP文件時間和日志中的時間對應不上,馬上找OP確認,OP交待說這個文件是回滾mv回來的,所以文件時間和我預期的不一致。我用stat命令看了一下,果然modify time相比access time早了一段時間,依據這點線索推測opcache依靠的是PHP文件的modify time作為文件被修改的檢測條件。在線下復現問題,填坑成功!

下面總結一下填坑過程中查的一些相關的知識點

加載opcache

在php.ini中增加opcache時需要使用zend_extension,而不是extension,不然會得到以下WARNING

PHP Warning:  PHP Startup: Invalid library (appears to be a Zend Extension, try loading using zend_extension=opcache.so from php.ini) in Unknown on line 0
配置opcache

使用下列推薦設置來獲得較好的性能:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

本次涉及到的有兩個參數

revalidate_freq,默認2
檢查腳本時間戳是否有更新的周期,以秒為單位。 設置為 0 會導致針對每個請求, OPcache 都會檢查腳本更新

validate_timestamps,默認1
如果啟用,那么 OPcache 會每隔 opcache.revalidate_freq 設定的秒數 檢查腳本是否更新。 如果禁用此選項,你必須使用 opcache_reset() 或者 opcache_invalidate() 函數來手動重置 OPcache,也可以 通過重啟 Web 服務器來使文件系統更改生效。

系統命令和函數stat

access time 表示我們最后一次訪問文件的時間
modify time 表示我們最后一次修改文件的時間
change time 表示我們最后一次對文件屬性改變的時間,包括權限,大小,屬性等等

C/C++中也可以使用stat方法查詢文件的這3個時間屬性,一般應用都會通過modify time判斷文件是否更新,我們本次踩坑就是因為文件是mv操作的,modity time沒有更新,所以opcache沒有更新。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/30307.html

相關文章

  • Zend引擎

    摘要:簡介引擎是開源的解釋語言的腳本引擎。有兩部分組成,即編譯器和執行器。執行代碼會經過如下個步驟確切的來說,應該是的語言引擎將代碼轉換為語言片段將轉換成簡單而有意義的表達式將表達式編譯成順次執行,每次一條,從而實現腳本的功能。 簡介 The Zend Engine is the open source scripting engine that interprets the PHP pro...

    CODING 評論0 收藏0
  • Zend Opcache 最佳設置

    摘要:當這個選項被啟用設置為,會在設置的時間到達后檢測文件的時間戳。設置值取值范圍最小值是,最大值在之前是,及之后是。這個選項的值是以兆字節作為單位,如果把它設置為,則表示,默認是,這是一個比較低的值。 在網上無意中看到的一篇文章,這哥們非常簡潔地談論了zend opcache的最佳設置,他說他為此花了大量的時間探索zend opcache的每個設置選項的細節,甚至是閱讀它的源代碼,并且在自...

    xiaokai 評論0 收藏0
  • PHP 進階之路 - 億級 pv 網站架構實戰之性能壓榨

    摘要:業務和架構不分家,架構是建立在對業務的理解之上的。主鍵最好保持順序遞增,隨機主鍵會導致聚簇索引樹頻繁分裂,隨機增多,數據離散,性能下降。沒有索引的更新,可能會導致全表數據都被鎖住。 本博客并非全部原創,其實是一個知識的歸納和匯總,里面我引用了很多網上、書上的內容。也給出了相關的鏈接。 本文涉及的知識點比較多,大家可以根據關鍵字去搜索相關的內容和購買相應的書籍進行系統的學習。不對的地方...

    SnaiLiu 評論0 收藏0
  • [筆記] 使用 opcache 優化生產環境 PHP

    摘要:配置為時,會根據設定的值檢查更新代碼設置為時,永不檢查。避免上傳代碼造成系統的不穩定。三推薦配置開發模式下推薦,直接禁用擴展更好多臺機器集群模式或者代碼更新頻繁時推薦,可以兼顧性能,方便代碼更新穩定項目推薦,性能最好參考 OPcache 通過將 PHP 腳本預編譯的字節碼存儲到共享內存中來提升 PHP 的性能, 存儲預編譯字節碼的好處就是 省去了每次加載和解析 PHP 腳本的開銷。 一...

    zollero 評論0 收藏0
  • php系列框架加速器Opcache

    摘要:什么是當解釋器完成對腳本代碼的分析后,便將它們生成可以直接運行的中間代碼,也稱為操作碼,。的目地是避免重復編譯,減少和內存開銷。這將帶來顯著的性能加速,通常特別是高流量和高并發量時降低了整體服務器的內存消耗,而且很少有缺點。 一、個人實踐發現opcache 最近為了應對雙十一期間高流量的沖擊,小編通過壓力測試去查找服務器性能瓶頸,發現100并發時,QPS并不是很高,但CPU和內存消耗特...

    lauren_liuling 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<