最近接触到了一个性能瓶颈,是由php原生的session锁产生的,归根结底php原生session使文件机制,这就意味着写可能会冲突,所以php默认有一个锁的机制,当同时session的锁过多的时候就会在session_start函数这个地方阻塞,最终导致超时或者得不到返回。
我在调试的时候使用了session锁释放的函数
session_write_close()
这个函数在使用session_star()后并且使用写完session后,来释放session的写锁
本来的session写锁会在脚本执行完才释放,这个函数的使用可以提前释放,但实际上我们知道如果访问量真的很大的话提前释放也是没用的,你的脚本执行到session的写部分就有可能有用户被阻塞了,最终极的解决方案应该是重写session方法,使用内存或者nosql等支持高并发读写的存储方式