【发布时间】:2011-03-12 21:14:37
【问题描述】:
我需要向用 RoR 编写的基于 Web 的监控系统发送警报。蛮力解决方案是使用 javascript 频繁轮询轻量级控制器。当然,缺点是为了获得对警报的紧迫响应时间,我必须非常频繁地轮询(每 5 秒一次)。
我的一个想法是让源自 AJAX 的轮询线程在服务器端休眠,直到服务器收到警报。然后,服务器将唤醒睡眠线程并立即向 Web 客户端返回响应。这将使我能够将轮询间隔缩短到每 30 秒或每分钟一次,同时缩短提醒用户的时间。
我没想到的一件事是 mongrel/rails 不会像我预期的那样为每个 Web 请求启动一个线程。这意味着其他传入的 Web 请求会阻塞,直到第一个线程的睡眠超时。
我尝试修改调用“config.threadsafe!”在我的配置中,但这似乎并没有将行为更改为每个请求模型的线程。另外,似乎使用 config.threadsafe 运行!这是一个冒险的提议,可能需要对我现有的应用程序进行大量测试和返工。
对我采取的方法或更好的方法来获得我正在寻找的响应时间,而不需要用请求淹没服务器有什么想法?
【问题讨论】:
标签: javascript ruby-on-rails mongrel