我有一个关于mod_passenger和Singleton类的问题(rails 2.3.5和ruby 1.9.1)。
在我的应用程序中,我有一个Singleton类,它实现了一个线程池(线程安全)。
还有控制器来管理所有线程(杀死并启动它们)。该控制器使用先前的单例类来对线程执行操作。
在本地,使用带有config.cache_classes = true的WEBrick,它可以正常工作。在生产中,使用mod_passenger(也是config.cache_classes = true),它不起作用:线程不会被杀死。但是,如果我使用控制台(生产环境)中的单例类,它可以正常工作。
可能是问题mod_passenger?有什么提示吗?
感谢。
答案 0 :(得分:1)
这是因为mod_passenger会多次生成应用程序,因此单个类的线程池在多个控制器调用之间不一致,因为每个实例都有自己的线程池。
我解决了使用脚本/运行程序运行单例类线程池的问题,并使用数据库表与所有应用程序实例进行通信。我使用此表发送线程池必须执行的作业。