所以我用Symfony3和Doctrine开发了这个网站。我对MySQL的性能有一个主要的关注,更具体地说,是同时打开连接的数量。
目前,该网站上有1到5个用户在线。如果,比方说,1,500用户在一分钟内连接,会发生什么情况?Symfony3或Doctrine能处理这种情况吗?我怎样才能确保网站不会崩溃,为我提供Too many connections MySQL错误?
如果我去5,000呢?10,000呢?服务器有4GB of RAM和一个2.40Ghz单核处理器,但我不担心硬件,因为我更关心MySQL。
这些情况已经发生在过去,但我运行的网站与Wordpress和W3的总缓存插件。我是否应该考虑使用缓存管理器,如memcached或其他?
简而言之,我担心网站在突然发生高损耗时变得不可用(首先想到了MysQL Too many connections错误,但我可能遗漏了更重要的东西)。
谢谢你在这个问题上减轻了我的负担,因为我还没有完全意识到Symfony的性能问题。
发布于 2016-06-07 23:27:55
我相信它确实为每位访客打开了一个连接。然而,不管它是否存在,Symfony或Doctrine都没有一颗神奇的子弹来处理每个加载/连接场景。
为什么不使用一个负载测试工具(有很多种),看看它是如何发展的呢?根据我的经验,预测瓶颈是无用的,因为它们总是会出现在你最不期望的地方。
例如,MySQL连接限制只是优化难题的一部分。仅仅担心连接限制是没有用的,您需要尽可能快速高效地响应web请求,以释放MySQL连接资源(以及应用程序正在使用的其他资源)。因此,如果您的服务器运行速度慢,那么无论MySQL连接限制如何,您几乎都会在重要负载下立即耗尽连接(或其他资源)。
也就是说,对于每分钟5到10k的用户来说,这些服务器规范似乎有点低。我不希望像这样的机器在没有经过认真的优化/缓存/等等的情况下处理这样的负载。
symfony performance page是一个很好的起点,也有一个很好的article on caching --有一个关于这个主题的ton of available material。祝你好运!)
发布于 2016-06-08 07:09:31
如果使用php,则取决于fpm/info.gov.hk.d/www.conf中的pm.max_children。
pm.max_children是指允许在这样一个池中存在的并发PHP进程的最大数量。如果传入请求的数量需要创建比max_children限制所允许的数量更多的PHP进程,则这些额外的请求将被积压在队列中等待服务。
因此,当pm.max_children > max_connections (my.cnf)和active users > max_connections时,您将得到“太多的连接”。
https://stackoverflow.com/questions/37689329
复制相似问题