Erlang 清除芝加哥老板缓存
从5-6个月以来,我一直在使用Erlang 清除芝加哥老板缓存,erlang,chicagoboss,Erlang,Chicagoboss,从5-6个月以来,我一直在使用erlang和chicagoboss。我观察到,当我长时间不运行/rebar compile时,服务器会承担太多的负载。至少需要20-25秒才能在localhost上重新加载任何网页 我的问题是: 运行/rebar compile时会发生什么情况 为什么我运行此命令后花费的时间很短?(据我所知) 这就编译了一些东西。) 我能做些什么来缩短装载时间 芝加哥老板 我们正在使用memcache和Cowboy。这跟我有什么关系吗 memcache 我假设您使用的是/ini
erlang
和chicagoboss
。我观察到,当我长时间不运行/rebar compile
时,服务器会承担太多的负载。至少需要20-25秒
才能在localhost
上重新加载任何网页
我的问题是:
- 运行
时会发生什么情况/rebar compile
- 为什么我运行此命令后花费的时间很短?(据我所知) 这就编译了一些东西。)
- 我能做些什么来缩短装载时间 芝加哥老板
- 我们正在使用
和memcache
。这跟我有什么关系吗 memcacheCowboy
/init-dev.sh
。这个脚本提供了自动重新加载,这在开发过程中非常好,但速度可能很慢。它检查所有.beam
文件,如果相应的.erl
文件后来被修改,则意味着必须重新编译。每次请求都会重新编译。它实际上并不创建新的.beam
文件来代替以前的文件。它“在运行中”编译并加载它们,因此,即使在第一次修改后没有更改任何内容,文件仍然需要重新编译
如果您对大量文件进行了一些修改,此操作可能会对您的系统产生很大影响。它可能与memcache或Cowboy没有任何关系。只需定期编译这些文件
一些技巧:
可能会很慢,因为它会遍历所有依赖项,请尝试/rebar compile
。这要快得多李>/rebar compile skip\u deps=true
- 如果您确实修改了CB文件并想要编译它们,您仍然不必等待,请尝试
。您必须编译所有使用该依赖项的应用程序,因此如果您修改了/rebar compile apps=your\u app\u name,boss
,则必须调用:boss\u db
/rebar compile apps=您的应用程序名称,boss,boss\u db
- 您可以在生产环境中使用热代码重新加载。编译invoke
,但它不适用于memcache!memcache驱动程序不是正确的OTP应用程序,在热代码重新加载后,它不会得到更新。第二次热代码重新加载后,使用旧代码的进程被清除,与memcache的连接丢失。因此,如果您使用memcache,请不要使用热代码重新加载/init.sh后重新加载