Erlang 清除芝加哥老板缓存

Erlang 清除芝加哥老板缓存,erlang,chicagoboss,Erlang,Chicagoboss,从5-6个月以来,我一直在使用erlang和chicagoboss。我观察到,当我长时间不运行/rebar compile时,服务器会承担太多的负载。至少需要20-25秒才能在localhost上重新加载任何网页 我的问题是: 运行/rebar compile时会发生什么情况 为什么我运行此命令后花费的时间很短?(据我所知) 这就编译了一些东西。) 我能做些什么来缩短装载时间 芝加哥老板 我们正在使用memcache和Cowboy。这跟我有什么关系吗 memcache 我假设您使用的是/ini

从5-6个月以来,我一直在使用
erlang
chicagoboss
。我观察到,当我长时间不运行
/rebar compile
时,服务器会承担太多的负载。至少需要
20-25秒
才能在
localhost
上重新加载任何网页

我的问题是:

  • 运行
    /rebar compile
    时会发生什么情况
  • 为什么我运行此命令后花费的时间很短?(据我所知) 这就编译了一些东西。)
  • 我能做些什么来缩短装载时间 芝加哥老板
  • 我们正在使用
    memcache
    Cowboy
    。这跟我有什么关系吗 memcache

我假设您使用的是
/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
    /init.sh后重新加载
    ,但它不适用于memcache!memcache驱动程序不是正确的OTP应用程序,在热代码重新加载后,它不会得到更新。第二次热代码重新加载后,使用旧代码的进程被清除,与memcache的连接丢失。因此,如果您使用memcache,请不要使用热代码重新加载