5分钟提高Laravel框架性能10倍以上? 400 报错
大家好, 这是我最近利用闲暇时间完成的方案,可能有点标题党的意思。实际上10倍是我各种应用测试的最差结果,因为包含了大量的数据库查询。单纯的框架性能,提升可以达到30倍。 而如果是简化的接口请求,性能相差更大。方案的核心思想已经在线上稳定运行超过3个月了。 因为希望能够简单地对laravel做一下优化,最近阅读理解了laravel5的大部分代码, 才算基本完成。 方案实现过程中出现了很多反复, 目前的方案可能也不够好, 希望对此感兴趣的朋友多多提意见。
项目的大概原理是:在框架资源初始化结束后再开启一个FastCGI服务,这样, 新的请求过来是直接从资源初始化结束后的状态开始,避免每次请求去做框架资源初始化的事情。
虽然是针对laravel, 实际上这个方案应该适用于所有性能不够优秀的框架。
项目地址: https://github.com/chefxu/stone
一个基于laravel5的使用例子:https://github.com/chefxu/stone-laravel-example
swoole 是怎么处理内存泄漏的? ######
swoole本身并不存在内存泄露, 你说的是使用swoole后应用内存泄露吧?
简单粗暴的方法就是设定下每个进程处理请求的最大次数, 这样达到次数后进程就会自然销毁, 内存就会释放, 这样可以把内存占用控制在一定范围内。
如果是打算查找内存泄露的问题, 就要看看哪些对象在请求结束后还被引用。 比如, 在laravel中, $cookie = Cookie::make('key', 'value') 会自动建立一个对象, 这个对象会被Facade, Application,以及程序调用的上下文引用。 程序退出后, Facade和Application中对于cookie的引用仍然存在, 如果不采取处理的话, 就会发生内存泄露。
不过好在现在PHP这方面已经相当稳定, 只要小心处理, 不会有什么问题的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。