PHP session回收

WBOY
WBOYOriginal
2016-06-20 12:36:27961browse

PHP的session到期后并不一定会马上被回收,尤其是当session被接管并转存到数据库中时,如果网站访问量大且session没有及时回收,会造成session飞速增长,并对网站的性能造成影响。

我是近期在运维一个高并发网站时发现这个问题的,session使用MySQL存储,在php-fpm的慢日志里发现insert和update session延迟很高,进session表一看,有将近150万条记录,绝大多数都已过期,看来是过期session没有被及时清理的问题。

我们使用的是自定义函数接管session回收,但触发这个函数则是由php.ini中的两个参数决定的,session.gc_probability和 session.gc_divisor,这两个参数默认为 1和1000,表示有千分之一的概率执行session回收,这个概率太低了,导致大量的session残留在数据库中拖慢网站速度。

将 session.gc_probability调整为50 ,即session回收的概率为1/20 ,reload php-fpm服务,几秒钟后发现,session表里只有几百条数据了,且一直稳定在几百条左右,这才是正常的。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn