成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Zend Opcache 的最佳設(shè)置

xiaokai / 2153人閱讀

摘要:當(dāng)這個(gè)選項(xiàng)被啟用設(shè)置為,會(huì)在設(shè)置的時(shí)間到達(dá)后檢測(cè)文件的時(shí)間戳。設(shè)置值取值范圍最小值是,最大值在之前是,及之后是。這個(gè)選項(xiàng)的值是以兆字節(jié)作為單位,如果把它設(shè)置為,則表示,默認(rèn)是,這是一個(gè)比較低的值。

在網(wǎng)上無意中看到的一篇文章,這哥們非常簡(jiǎn)潔地談?wù)摿藌end opcache的最佳設(shè)置,他說他為此花了大量的時(shí)間探索zend opcache的每個(gè)設(shè)置選項(xiàng)的細(xì)節(jié),甚至是閱讀它的源代碼,并且在自己的項(xiàng)目中實(shí)踐(一個(gè)每天有117 million的HTTP請(qǐng)求的應(yīng)用)。

Opcache優(yōu)化在著名的《modern php》 中也有重要篇幅。在PHP文檔也有詳細(xì)介紹:http://php.net/manual/zh/opcache.configuration.php#ini.opcache.revalidate-freq

個(gè)人覺得這種文章相當(dāng)有指導(dǎo)意義,所以特地把它的設(shè)置方式摘譯如下(格式有些修改)。

opcache.revalidate_freq

這個(gè)選項(xiàng)用于設(shè)置緩存的過期時(shí)間(單位是秒),當(dāng)這個(gè)時(shí)間達(dá)到后,opcache會(huì)檢查你的代碼是否改變,如果改變了PHP會(huì)重新編譯它,生成新的opcode,并且更新緩存。值為“0”表示每次請(qǐng)求都會(huì)檢查你的PHP代碼是否更新(這意味著會(huì)增加很多次stat系統(tǒng)調(diào)用,譯注:stat系統(tǒng)調(diào)用是讀取文件的狀態(tài),這里主要是獲取最近修改時(shí)間,這個(gè)系統(tǒng)調(diào)用會(huì)發(fā)生磁盤I/O,所以必然會(huì)消耗一些CPU時(shí)間,當(dāng)然系統(tǒng)調(diào)用本身也會(huì)消耗一些CPU時(shí)間)??梢栽陂_發(fā)環(huán)境中把它設(shè)置為0,生產(chǎn)環(huán)境下不用管,因?yàn)橄旅鏁?huì)介紹另外一個(gè)設(shè)置選項(xiàng)。

opcache.validate_timestamps

當(dāng)這個(gè)選項(xiàng)被啟用(設(shè)置為1),PHP會(huì)在opcache.revalidate_freq設(shè)置的時(shí)間到達(dá)后檢測(cè)文件的時(shí)間戳(timestamp)。

如果這個(gè)選項(xiàng)被禁用(設(shè)置為0),opcache.revalidate_freq會(huì)被忽略,PHP文件永遠(yuǎn)不會(huì)被檢查。這意味著如果你修改了你的代碼,然后你把它更新到服務(wù)器上,再在瀏覽器上請(qǐng)求更新的代碼對(duì)應(yīng)的功能,你會(huì)看不到更新的效果,你必須得重新加載你的PHP(使用kill -SIGUSR2強(qiáng)制重新加載)。

這個(gè)設(shè)定是不是有些蛋疼,但是我強(qiáng)烈建議你在生產(chǎn)環(huán)境中使用,why?因?yàn)楫?dāng)你在更新服務(wù)器代碼的時(shí)候,如果代碼較多,更新操作是有些延遲的,在這個(gè)延遲的過程中必然出現(xiàn)老代碼和新代碼混合的情況,這個(gè)時(shí)候?qū)τ脩粽?qǐng)求的處理必然存在不確定性。

opcache.max_accelerated_files

這個(gè)選項(xiàng)用于控制內(nèi)存中最多可以緩存多少個(gè)PHP文件。這個(gè)選項(xiàng)必須得設(shè)置得足夠大,大于你的項(xiàng)目中的所有PHP文件的總和。我的代碼庫大概有6000個(gè)PHP文件,所以我把這個(gè)值設(shè)置為一個(gè)素?cái)?shù)7963。

真實(shí)的取值是在質(zhì)數(shù)集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一個(gè)比設(shè)置值大的質(zhì)數(shù)。 設(shè)置值取值范圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。
聽起來好復(fù)雜,但用下面的命令就妥啦

你可以運(yùn)行 find . -type f -print | grep php | wc -l 這個(gè)命令來快速計(jì)算你的代碼庫中的PHP文件數(shù)。

opcache.memory_consumption

這個(gè)選項(xiàng)的默認(rèn)值為64MB,我把它設(shè)置為192MB,因?yàn)槲业拇a很大。你可以通過調(diào)用opcachegetstatus()來獲取opcache使用的內(nèi)存的總量,如果這個(gè)值很大,你可以把這個(gè)選項(xiàng)設(shè)置得更大一些。

opcache.interned_strings_buffer

這是一個(gè)很有用的選項(xiàng),但是似乎完全沒有文檔說明。PHP使用了一種叫做字符串駐留(string interning)的技術(shù)來改善性能。例如,如果你在代碼中使用了1000次字符串“foobar”,在PHP內(nèi)部只會(huì)在第一使用這個(gè)字符串的時(shí)候分配一個(gè)不可變的內(nèi)存區(qū)域來存儲(chǔ)這個(gè)字符串,其他的999次使用都會(huì)直接指向這個(gè)內(nèi)存區(qū)域。這個(gè)選項(xiàng)則會(huì)把這個(gè)特性提升一個(gè)層次——默認(rèn)情況下這個(gè)不可變的內(nèi)存區(qū)域只會(huì)存在于單個(gè)php-fpm的進(jìn)程中,如果設(shè)置了這個(gè)選項(xiàng),那么它將會(huì)在所有的php-fpm進(jìn)程中共享。在比較大的應(yīng)用中,這可以非常有效地節(jié)約內(nèi)存,提高應(yīng)用的性能。

這個(gè)選項(xiàng)的值是以兆字節(jié)(megabytes)作為單位,如果把它設(shè)置為16,則表示16MB,默認(rèn)是4MB,這是一個(gè)比較低的值。

opcache.fast_shutdown

另外一個(gè)很有用但也沒有文檔說明的選項(xiàng)。從字面上理解就是“允許更快速關(guān)閉”。它的作用是在單個(gè)請(qǐng)求結(jié)束時(shí)提供一種更快速的機(jī)制來調(diào)用代碼中的析構(gòu)器,從而加快PHP的響應(yīng)速度和PHP進(jìn)程資源的回收速度,這樣應(yīng)用程序可以更快速地響應(yīng)下一個(gè)請(qǐng)求。把它設(shè)置為1就可以使用這個(gè)機(jī)制了。

最終我們對(duì)于opcache在php.ini的設(shè)置如下:

開發(fā)模式下推薦,直接禁用opcache擴(kuò)展更好

opcache.revalidate_freq=0
opcache.validate_timestamps=1
opcache.max_accelerated_files=3000
opcache.memory_consumption=192
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1

多臺(tái)機(jī)器集群模式或者代碼更新頻繁時(shí)推薦,可以兼顧性能,方便代碼更新

opcache.revalidate_freq=300
opcache.validate_timestamps=1
opcache.max_accelerated_files=7963
opcache.memory_consumption=192
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1

穩(wěn)定項(xiàng)目推薦,性能最好

opcache.revalidate_freq=0
opcache.validate_timestamps=0
opcache.max_accelerated_files=7963
opcache.memory_consumption=192
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1

via: http://gywbd.github.io/posts/2016/1/best-config-for-zend-opcache.html

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21733.html

相關(guān)文章

  • 【modernPHP專題(13)】ZendOpcache字節(jié)碼緩存

    摘要:概述字節(jié)碼緩存不是的新特性,有很多獨(dú)立的擴(kuò)展可以實(shí)現(xiàn),比如和等,但是截至目前這些擴(kuò)展都沒有集成到內(nèi)核,從開始,內(nèi)置了字節(jié)碼緩存功能,名為。開始之前,我們先來看看什么是字節(jié)碼緩存,以及字節(jié)碼緩存的作用是什么。該函數(shù)將重置整個(gè)字節(jié)碼緩存。 概述 字節(jié)碼緩存不是PHP的新特性,有很多獨(dú)立的擴(kuò)展可以實(shí)現(xiàn),比如APC、eAccelerator和Xache等,但是截至目前這些擴(kuò)展都沒有集成到PHP...

    KevinYan 評(píng)論0 收藏0
  • PHP應(yīng)用性能優(yōu)化指南

    摘要:怎樣才算是高性能的應(yīng)用性能和速度不是一對(duì)同義詞。紅線表示針對(duì)速度進(jìn)行了優(yōu)化的腳本,藍(lán)線是可擴(kuò)展性優(yōu)先的腳本。將任何這些功能置于循環(huán)中可能會(huì)導(dǎo)致性能問題。完整的代碼檢測(cè)評(píng)估雖然可能很耗時(shí),但它可以為你提供有關(guān)應(yīng)用程序性能的深入信息。 showImg(https://segmentfault.com/img/bVNxDn?w=900&h=500);程序員都喜歡最新的PHP 7,因?yàn)樗筆H...

    EddieChan 評(píng)論0 收藏0
  • opcache檢測(cè)文件更新小坑

    摘要:昨晚線上出故障,緊急處理切換容災(zāi)后緩解了故障,解決故障后從容災(zāi)切換回正式服務(wù)時(shí)發(fā)現(xiàn)文件更新無效,重啟后才生效。查看昨晚的日志,更新不生效持續(xù)時(shí)間遠(yuǎn)遠(yuǎn)大于秒,所以這個(gè)檢測(cè)間隔時(shí)間的問題可以了,我們繼續(xù)。 昨晚線上出故障,緊急處理切換容災(zāi)后緩解了故障,解決故障后從容災(zāi)切換回正式服務(wù)時(shí)發(fā)現(xiàn)PHP文件更新無效,重啟FPM后才生效。下面記錄復(fù)盤追查的過程。 因?yàn)槭荘HP文件更新不生效,所以馬上懷...

    you_De 評(píng)論0 收藏0
  • PHP7.2、PHP7.1 性能對(duì)比

    摘要:鳥哥點(diǎn)評(píng)相對(duì)于主要優(yōu)化也是在?;诘哪_本測(cè)試未開啟取平均值取平均值開啟取平均值取平均值在本次測(cè)試中,未開啟的情況下,性能比略有提升,開啟之后,比有很大的提升。測(cè)試結(jié)果和配置參數(shù)以及服務(wù)器配置有關(guān),僅供對(duì)比與的性能。 直播好久沒有曝光量了,自薦一波《PHP進(jìn)階之路》(PHPer們,好久沒有投資自己了呢?)原文地址 https://mengkang.net/1019.html PHP7.2...

    li21 評(píng)論0 收藏0
  • PHP新特性之字節(jié)碼緩存和內(nèi)置服務(wù)器

    摘要:從開始,內(nèi)置了字節(jié)碼緩存功能,名為。因?yàn)槭墙忉屝哉Z言,解釋器執(zhí)行腳本時(shí)會(huì)解析腳本代碼,生成一系列的操作碼,然后執(zhí)行字節(jié)碼,每次的請(qǐng)求都是這樣,會(huì)消耗很多資源,使用字節(jié)碼緩存可以緩存預(yù)先編譯的字節(jié)碼,減少響應(yīng)時(shí)間,降低系統(tǒng)資源的壓力。 Zend OPcache 1).從PHP5.0開始,內(nèi)置了字節(jié)碼緩存功能,名為Zend OPcache。因?yàn)镻HP是解釋性語言,PHP解釋器執(zhí)行PHP腳本...

    lolomaco 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<