公司在做高并發壓測,fastcgi,apc,ocache,opcache,
幾經考慮,最終考慮用opcache,因為作為 zend-opcache合并為php5.5的分支版本,xcache的前途堪慮,
在環境的安裝上竟然折騰了半個下午沒有搞定,這個作下問題記錄。
先說安裝,
http://php.net/manual/zh/opcache.installation.php
官網的說明,因為 5.2 5,3 5,4也可以用pecl來安裝,試了下倒是安裝成功了但啟動后也沒有報錯,但info信息中一起沒有,安裝過程如下 :
sudo yum install php54w-pecl-zendopcache sudo pecl install zendopcache-7.0.3
;extension=opcache.so extension=/usr/lib64/php/modules/opcache.so ; 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
sudo service php-fpm restart
但啟動后一直報錯502,fastcgi的日志也只有warning的報錯
WARNING:
[pool www] child 30464 exited on signal 11 (SIGSEGV) after 22.168325 seconds
from start
有點找不到思路, 經過一番檢查也沒有發現什么問題,遂決定手動編譯opcache模塊來看看,
中間安裝的過程有個安裝包提示升級php-common,思緒沒理好,竟然把php5.4給卸載了!!簡單2到家了~~~不過也因為這個原因才發現了問題,
# 重裝PHP環境這里不再鰲述,只是重裝后我的環境由因為官網源升級php由原來的php5.4.34變成了5.4.36..
# sudo wget http://pecl.php.net/get/zendopcache-7.0.3.tgz # sudo tar –xv zendopcache-7.0.3.tgz # sudo cd zendopcache-7.0.3 # sudo phpize # sudo ./configure --with-php-config=/usr/bin/php-config # sudo make # sudo make install #sudo sudo service php-fpm restart
這里有變化的地方: 看README
zend_extension=/usr/lib64/php/modules/opcache.so 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 memcached.use_sasl = 1
|
這里有警告信息:
[eAccelerator] This build of |
查了下eAccelerator 和opcache實現的功能類似,只是原理有所區別,考慮到這里php.ini中將eAccelerator相關配置全部注釋,再重啟 php-fpm
$ sudo service php-fpm restart
久違的success,
# php –v ###也顯示正常 PHP 5.4.36 (cli) (built: Dec 20 2014 14:09:43) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
phpinfo()頁面也總算顯示出來了
問題是解決了,但非常遺憾的是因為時間的關系沒有找到問題根源…
給大家提供些php5.4.的技術上問題,同時也給大家提供些上網搜索問題的小技巧吧。
原創文章,作者:stanley,如若轉載,請注明出處:http://www.www58058.com/3448