我使用erlang和chicagoboss已经有5-6个月了.我观察到,当我很长时间不运行./rebar compile时,服务器就会承受太多的负载。至少需要20 -25 seconds才能在localhost上重新加载任何网页。
我的问题是:
./rebar compile时会发生什么?memcache和Cowboy。这和memcache有关系吗?发布于 2014-10-16 11:50:32
我想,您使用的是./init-dev.sh。这个脚本提供自动重新加载,这在开发过程中是非常棒的,但是速度可能很慢。它检查所有的.beam文件,如果以后修改了相应的.erl文件,这意味着必须重新编译它。每次请求都会重新编译。实际上,它并没有在前面的文件中创建新的.beam文件。它编译它们“动态”并加载,因此,即使在第一次修改后没有更改任何内容,文件仍然必须重新编译。
如果您对更多的文件做了一些修改,这个操作可能会对您的系统产生很大的影响。这可能和memcache或牛仔无关。定期编译文件就行了。
几个窍门:
./rebar compile可能比较慢,因为它会遍历所有的依赖项,所以请尝试./rebar compile skip_deps=true。这太快了!./rebar compile apps=your_app_name,boss。您必须编译所有使用该依赖项的应用程序,所以如果您修改了boss_db,就必须调用:./rebar compile apps=your_app_name,boss,boss_db。./init.sh reload之后,但是它不适用于memcache!memcache驱动程序不是正确的OTP应用程序,在热代码重新加载之后,它不会被更新。在第二次热代码重新加载后,将清除使用旧代码的进程,并丢失与memcache的连接。因此,如果您正在使用memcache,不要使用热代码重新加载。https://stackoverflow.com/questions/26398221
复制相似问题