时间:2021-07-01 10:21:17 帮助过:17人阅读
我是近期在运维一个高并发网站时发现这个问题的,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表里只有几百条数据了,且一直稳定在几百条左右,这才是正常的。