我在Heroku上有一个应用程序,我分叉试用欧洲地区的支持。 经过一些初步障碍(Heroku Europe region: "Application error" when trying to fork)后,这似乎工作正常。
我使用ab(Apache Bench)工具运行了一个简单的负载测试,预计会看到每秒请求的改进。但事实并非如此:
有10个并发用户的1000次请求的时间安排(ab -n 1000 -c 10< URL>)
US:
Connection Times (ms)
min mean[+/-sd] median max
Connect: 305 349 44.4 337 719
Processing: 128 356 282.8 244 2213
Waiting: 127 350 283.0 238 2213
Total: 442 705 280.5 610 2521
EU:
Connection Times (ms)
min mean[+/-sd] median max
Connect: 125 188 47.6 175 451
Processing: 67 2595 3537.9 3309 30171
Waiting: 66 2591 3538.9 3309 30170
Total: 207 2783 3536.2 3472 30321
有些事情跳出来了:
经过调查,这就是我发现的:
我看过New Relic,但这些好奇的慢速请求只显示99%的时间花在一些未指定的“应用程序代码(ROOT)”(与实际数据库访问等分开显示),没有可能向下钻取(注意:我正在制定免费计划)。应用程序代码似乎没有任何问题(毕竟它在美国运行良好)。
我的问题:我该如何调试?我可以改变一些配置来解决这个问题吗?我错过了什么?
更新:
我在评论中尝试了这些建议,最后完全为欧盟禁用了Memcachier插件(另外我改变了应用程序,根本不再进行缓存,只是作为测试)。
这确实不解决了Unicorn超时(尽管它们似乎现在少了(!))。
答案 0 :(得分:0)
我怀疑你的一个插件是在不同的地区配置的。使用config:get
检索memcachier网址:
$ heroku config:get MEMCACHIER_URL
然后将域名粘贴到http://ip-lookup.net/之类的内容,以查看托管加载项的地理位置。
如果它在美国,那么你需要在欧盟重新配置:
$ heroku addons:remove memcachier
$ heroku addons:add memcachier
它应该在正确的区域内提供。
如果加载项是provisioned in the wrong region,那么这是一个错误。如果是这样,请在此处使用您的应用名称进行评论,我们可以对其进行调查。