php 5.4 APC invalid pointer报错的解决办法
为什么要使用APC ? 经过一些压力测试(使用apache ab工具),得出以下结果:1. 使用ab发起相同请求参数,启用APC后,服务器负载降低一半,也就是说启用APC后,服务器负载能力提升约2倍。
2. 启用APC后,脚本执行速度约有20%-30%提升,这也是使用ab的测试报告总结。
3. 我曾经在生产环境使用第三方的缓存,如xcache, eAccelerator, 结果很不稳定,导致php-fpm负载变得很高(也可能是我参数配置不当引起)
4. APC毕竟是PHP官方的扩展,对其更信赖一些。
5. 后来,凡是安装PHP,我必定会安装APC扩展。就没有尝试过别的缓存模块(也是一朝被蛇咬,十年怕井绳的心理在作怪)
但这次我在使用较新的 php 5.4.14, APC 3.1.9时,遇到一些问题
OS : RHEL 5.6 x64
PHP : 5.4.14
APC: 3.1.9
使用fpm方式编译,APC以PECL扩展方式安装,启动php-fpm进程时,报错:
restarting /usr/local/php/sbin/php-fpm ...
*** glibc detected *** /usr/local/php/sbin/php-fpm: free(): invalid pointer: 0xb74b0910 ***
======= Backtrace: =========
/lib/libc.so.6
/lib/libc.so.6(cfree+0x59)
/usr/local/php/sbin/php-fpm(destroy_zend_class+0x202)
/usr/local/php/sbin/php-fpm(zend_hash_clean+0x66)
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/apc.so(apc_interned_strings_shutdown+0x35)
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/apc.so(apc_module_shutdown+0x14d)
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/apc.so
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm(zend_hash_graceful_reverse_destroy+0x18)
/usr/local/php/sbin/php-fpm(zend_destroy_modules+0x2c)
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm(php_module_shutdown+0x2a)
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm
/lib/libc.so.6(__libc_start_main+0xdc)
/usr/local/php/sbin/php-fpm(realloc+0x9d)
解决办法:使用APC 3.1.13,但这个版本的APC还是beta版本,在生产环境中是否稳定,还需要观察
下载地址:http://pecl.php.net/package/APC/3.1.13
页:
[1]