如何检测scala executioncontext耗尽?
我遇到了Playframework应用程序不时没有响应的问题,我想在运行时的日志信息中检测出当前在耗尽的执行上下文中运行的内容.
实现这一目标的最佳策略是什么?我想过将小的runnables发布到执行上下文中,如果它们没有及时执行,我会记录一个警告.这个最大等待时间当然应该是可配置的.例如,主Web执行上下文永远不应被阻止超过1秒,但后台db执行上下文可能允许30秒阻塞. 有人必须先做过这件事吗? 相关信息: 解决方法
这是一个非常难以回答的问题.
调度员的配置实际上取决于您的演员正在做的工作类型. 也许你应该看看产生未来的演员来完成他们的工作.在配置文件中预定义执行上下文并使用它们可能是个好主意: 隐式val ec:ExecutionContext = context.system.dispatchers.lookup(“someDispatcher”) 那些演员可能会导致饥饿效应. 您希望实现的效果是确保快速处理消息,并且长时间运行的任务不会影响它们,因此分离是关键. Typesafe控制台是监控应用程序的好工具.您可以查看那里的调度程序,看看处理邮件的延迟会增加. 另一个问题是识别像网络I / O这样高风险工作的参与者.如果线程中的某些内容发生在池中不再可用,则会产生问题. 很可能在没有试验线程池大小的情况下,您将不知道什么是最适合您的设置. 我写的大多数建议都是我从Jamie Allen出版的“有效的Akka”一书中得知的,他们似乎对我很有用.“修复饥饿”一书中有一节.你可能想仔细看看它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |