查看Elixir 项目的一些经验教训的源代码
←
Elixir 项目的一些经验教训
跳转到:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 优化 == * 对于 docker 容器,开启 SMP 情况下应该设置调度器数量,因为虚拟化会导致容器内启动了过多调度器, <pre>+S 4 </pre> 设置为 4个。 * 增大 process 和 ets 上限: <pre> -env ERL_MAX_PORTS 102400 -env ERL_MAX_ETS_TABLES 50000 </pre> * 通过 <pre>:erlang.system_info/1</pre> 来观察内存、进程等状况。 * GenServer 的消息处理应当尽量快,避免将 IO 操作放在其中,可以异步化,然后将请求结果更新回去 GenServer 即可。 * 定时器采用 :erlang.send_after 配合 GenServer.handle_info 来处理。 * 对于负载较高,或者较为核心的 process,可以配置 process,比如优先级,堆大小等: <pre> GenServer.start_link(__MODULE__, :ok, name: @name, spawn_opt: [priority: :high, min_bin_vheap_size: 1024*1024, min_heap_size: 1024*1024]) </pre> 当然也可以采用 poolboy 都池化方案。 * 测试来看,HTTP 库 ibrowse 的性能比 hackney 更好,也就是 HTTPotion 比 HTTPoison 表现更为优秀,两者都需要设置连接池大小: <pre> :ibrowse.set_dest(host, port, [{:max_sessions, 750}, {:max_pipeline_size, 1}]) :hackney_pool.start_pool(:pool, [timeout: 15000, max_connections: 1000]) </pre> * 日志对性能的影响很大,生产环境一定不要开启 debug,至少 INFO 级别。如果不想输出 phoenix 的 route 访问日志,可以从 lib 里的 Endpoint 移除 plug Plug.Logger,在想要输出的 scope 里再加回去。
返回到
Elixir 项目的一些经验教训
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面