Symfony3/Doctrine是否为每个访问者打开一个MySQL连接



所以我用Symfony3Doctrine开发了这个网站。我主要关心MySQL的性能,更具体地说是同时打开连接的数量。

目前,网站上有一到五名用户在线。假设1,500用户在一分钟内连接,会发生什么?Symfony3或Doctrine能处理这种情况吗?我如何才能确保网站不会宕机,为我提供Too many connectionsMySQL错误?

如果我去5,00010,000呢?服务器有4GB的RAM和2.40Ghz的单核处理器,但我不会担心硬件,因为我更关心MySQL。

这些情况在过去已经发生过,但我使用Wordpress和W3 Total Cache插件运行网站。我应该考虑使用memcached之类的缓存管理器吗?

简言之,我担心网站在突然出现高峰时变得不可用(最初我想到了MysQLToo many connections错误,但我可能错过了更重要的东西)。

谢谢你让我在这件事上放松下来,因为我还没有完全意识到Symfony的性能问题。

我相信它确实为每个访问者打开了一个连接。不管是不是这样,Symfony还是Doctrine都没有一颗神奇的子弹来处理每一个负载/连接场景。

为什么不使用负载测试工具(有很多),看看它的实际效果如何?根据我的经验,预测瓶颈是没有用的,因为它们总是会出现在你最意想不到的地方

例如,MySQL连接限制只是优化难题的一部分。仅仅担心连接限制是没有用的,你需要尽可能快速高效地响应web请求,以释放MySQL连接资源(以及你的应用程序正在使用的其他资源)。因此,如果您的服务器速度较慢,无论MySQL的连接限制如何,在负载很大的情况下,您几乎会立即耗尽连接(或其他资源)。

也就是说,对于每分钟5-10万用户来说,这些服务器规格似乎有点低。如果没有一些认真的优化/缓存等,我不会指望像这样的机器能够处理这种负载。

symfony性能页面是一个很好的开端,还有一篇关于缓存的好文章——有很多关于这个主题的可用材料。祝你好运!:)

如果使用php-fpm,则取决于fpm/pool.d/www.conf.中的pm.max_children

pm。max_children是指允许在此类池中存在的最大并发PHP-FPM进程数。如果传入请求的数量需要创建比max_children限制允许的数量更多的PHP-FPM进程,那么这些额外的请求将积压在队列中等待服务。

因此,当pm.max_children>最大连接(my.cnf)和活动用户>最大连接时,你会得到"太多连接"。

相关内容

  • 没有找到相关文章

最新更新