q989 发表于 2017-3-27 11:45:46

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]
查看完整版本: php 5.4 APC invalid pointer报错的解决办法