我们正在运行线程ruby服务器(Puma),并且我们的Sinatra应用程序遇到了严重的性能问题。具体来说,像Thread.pass
这样简单的东西可以占用2s。具有16个线程的服务器如何可以接管2s以将控制权返回给线程? Ruby调度程序是坏的,还是我们可以做些什么来解决这个问题?
详细说明:
提前致谢!
答案 0 :(得分:0)
Thread.pass
所采用的时间是非指定值,可能需要10秒,或者可能根本不会通过(即立即继续执行)。
Thread.pass
更像是暗示或建议。
答案 1 :(得分:0)
长话短说:这是heroku虚拟机。
有时您的整个虚拟机暂停,因此该程序(无论使用哪种语言)仅停止响应几秒钟。在专用盒子上运行100%解决了此问题。 Heroku 1x / 2x测功机对于不能接受多秒停顿的应用似乎并不可靠。我知道需要共享资源,但是要完全暂停世界几秒钟是太多了。似乎他们的日程安排可能需要一些工作。