php - Memcached 在 Symfony2+Doctrine2 应用程序负载下显着变慢

标签 php symfony caching doctrine-orm memcached

我一直在对我的 Symfony2 应用程序进行负载测试,我发现的瓶颈之一似乎是 Memcached。

我在网络服务器上使用 memcached 来缓存学说元数据和查询,并且我使用亚马逊的 elasticache memcached 作为学说的结果缓存。

在没有任何负载的情况下,我的端到端时间是 300-350 毫秒,而 memcached 占其中大约 10 毫秒

enter image description here

但是,在 25 个并发请求的负载下,我的总响应速度减慢到大约 2500 毫秒,其中很大一部分似乎是 memcached

enter image description here

39 个 memcached 查询中有 34 个正在获取类元数据,其中一些是 0.1 毫秒,另一些是 40 或 50 毫秒,这似乎是相当随机的。

我已经尝试增加本地内存缓存配置文件中的最大连接数和缓存大小,我还能做些什么来尝试从我的应用程序中消除这个瓶颈吗?

非常感谢-

最佳答案

Network I/O : 检查 Network I/O 是否有任何问题。这可能是由于多种原因造成的:

  • 网络带宽很低。
  • Memcached 和您的应用程序/Web 服务器位于不同的区域,并且 memcached 可以完美地返回结果,但是 I/O 时间很长。
  • 从 Memcached 返回的数据非常大,序列化和反序列化花费了大量时间。如果是这种情况,您可以尝试使用更好的序列化和反序列化机制来减小大小。
    0.1ms到40ms之间的响应时间不一致可能是因为这个原因。

请验证相同。

关于php - Memcached 在 Symfony2+Doctrine2 应用程序负载下显着变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955867/

相关文章:

javascript - 无法将数据从一个表复制到另一个表

php - Facebook Facepile 批量请求

php - 未找到 Laravel OrderByRaw 列

php - 对学说的@OneToMany ArrayCollection 进行排序

php - 运行 "new"命令时,Symfony CLI 未使用正确的 PHP 版本

php - 如何将连接表的结果实体封装在 Doctrine 中的另一个实体中?

php - MySQLdump 结果有很多注释行,没有真正的内容

c# - 返回图像的 ASPX - 输出可缓存?

c# - ASP.NET MVC 错误 : Object being referred to is not locked by any Client

java - Guava 中的条件内存