2016-10-27 16:41发布
1、今天被问一个问题:请问具体到PHP的代码层面,改善高并发的措施有哪些?
面对高并发问题我首先想到的是集群、缓存(apt、redis、mem、内存...),但具体到PHP代码层面除了想到队列、减少网络请求,想不到别的了,所以开了这个讨论贴,希望大神留下可行方案。
具体到代码方面,现在通常谈到提高并发能力,可以借鉴nodejs的思路,就是异步,非阻塞式的访问,以保证高并发,所以你可以谈谈php都有哪些异步操作的扩展,比如我搜了一下有个叫做swoole的扩展。还有就是把计算任务更多的交到前端,减少服务器端的计算,提高响应速度。还有就是操作数据库,可能谈一谈如何修改数据库的组织形式(减少join之类的操作)也不错
10ms一次的请求, 比100ms一次的请求, 压力会小10倍, 因为你的并发是有限的, 如果一个连接进来后, 迟迟不完结, 就会占用资源不释放, 容易发生同一时间内存在大量并发连接. CPU和内存满的时候, 会恶性循环卡死, 所以要设好连接数上限.
循环中产生了大量的IO, 如果平均一用户一次数据20个订单数据, 10个并发请求就产生了200个数据库/缓存IO
对象资源复用 例如单例模式 实例化一个数据库对象 这个对象共用减少对数据的IO开销
然后, 绝大多数人有这个毛病(我们公司到处有这样代码), 未优化的大量数据I/O:
是面试时候的问题吗?
我也了解的比较浅,我就知道,能少请求数据库就尽量少请求,存库的数据如果不急的话的就放redis,然后做定时任务去跑。
把它们合并为一个IO:
唯快不破!
估计是面试公司实际开发时候遇到相关的问题,就拿来当面试问题
最多设置5个标签!
付费偷看金额在0.1-10元之间
具体到代码方面,现在通常谈到提高并发能力,可以借鉴nodejs的思路,就是异步,非阻塞式的访问,以保证高并发,所以你可以谈谈php都有哪些异步操作的扩展,比如我搜了一下有个叫做swoole的扩展。
还有就是把计算任务更多的交到前端,减少服务器端的计算,提高响应速度。
还有就是操作数据库,可能谈一谈如何修改数据库的组织形式(减少join之类的操作)也不错
10ms一次的请求, 比100ms一次的请求, 压力会小10倍, 因为你的并发是有限的, 如果一个连接进来后, 迟迟不完结, 就会占用资源不释放, 容易发生同一时间内存在大量并发连接. CPU和内存满的时候, 会恶性循环卡死, 所以要设好连接数上限.
循环中产生了大量的IO, 如果平均一用户一次数据20个订单数据, 10个并发请求就产生了200个数据库/缓存IO
对象资源复用 例如单例模式 实例化一个数据库对象 这个对象共用
减少对数据的IO开销
然后, 绝大多数人有这个毛病(我们公司到处有这样代码), 未优化的大量数据I/O:
是面试时候的问题吗?
我也了解的比较浅,我就知道,能少请求数据库就尽量少请求,存库的数据如果不急的话的就放redis,然后做定时任务去跑。
把它们合并为一个IO:
唯快不破!
估计是面试公司实际开发时候遇到相关的问题,就拿来当面试问题
一周热门 更多>