Ruby fork 多个 worker 进程来响应请求时,预加载的数据如何处理?

chaosong · 2013年09月19日 · 最后由 tumayun 回复于 2013年09月20日 · 2685 次阅读

RT

  • 像 Unicorn / Gunicorn 这种 fork 多个 worker 进程(Ruby / Python)来响应请求时,预加载的数据如何处理?
  • 像 Java 一般都是 Servlet 容器 Listener 实现加载,一个进程就一份,一个系统一般就一个 JVM 进程,这种诉求在 Ruby / Python 这边一般都怎么搞?
  • 请求一下在这方面可参考的简单易懂的开源项目~

谢谢各位!

如果只读不写话,有copy on write那么就只在 master 进程中存在一份数据,其他进程会共享 master,这样是不会有什么问题的,如果要写而且要同步的话,那么可以借助存储介质来实现啊,比如放 mysql、memcache 或者 redis

#1 楼 @tumayun 这份数据一般是后台进程定期读数据库中的新数据到内存中,其他地方只是用来读取,这个算『只读』吗?如果之用应用内存,不用 redis 之类的,有样例可以参考吗,谢谢!

@chaosong 这个不只读啊,还有写,从数据库取数据然后写 如果不是太大的话,一个进程一份也不会有什么问题,看你怎么衡量,建议还是用 memcache 吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号