首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Riak连接池静默断开

Riak连接池静默断开
EN

Stack Overflow用户
提问于 2012-10-05 21:52:17
回答 1查看 608关注 0票数 0

我在生产过程中遇到了严重的问题。我们和erlang pb官方客户端建立了连接池。一切都很好。为了组织池子,我们使用hottub (我们尝试了几个,但这是最简单的)。每个连接至少在3-5分钟内使用一次(目前生产尚未满负荷)。

几天后,riak服务器断开了我们的连接。但是套接字进程不会死,对于任何请求,它都会响应{error, disconnected}。到目前为止,我写了池工人检查器,如果它is_connected(Pid)返回不是真,我们杀死工人和池创建一个新的。我每隔十分钟就发射一次。但这并不管用。它返回true,但随后我请求获取{error, disconnected}。到目前为止,唯一有效解决方案是如果某些工作进程返回{error, disconnected},则重新启动池已满。这是非常原始的,可能会使整个应用程序崩溃。

当我检查服务器日志时,我发现了许多类似以下两个错误:

代码语言:javascript
复制
2012-09-20 00:10:10.976 [error] <0.803.0>@riak_core_vnode:handle_info:510 296867520082839655260123481645494988367611297792 riak_kv_vnode worker pool crashed {timeout,{gen_server,call,[<0.819.0>,{work,<0.806.0>,{fold,#Fun<riak_kv_eleveldb_backend.3.96124638>,#Fun<riak_kv_vnode.14.47983300>},{raw,59205031,<0.28969.11>}}]}}
2012-09-20 00:10:10.976 [error] <0.862.0>@riak_core_vnode:handle_info:510 365375409332725729550921208179070754913983135744 riak_kv_vnode worker pool crashed {timeout,{gen_fsm,sync_send_event,[<0.866.0>,{checkout,false,5000},5000]}}

我猜这是真正的问题,但我认为客户端连接至少应该记录一些东西,获得连接问题失败列表,否则就会死亡。我得到is_connected(Pid) = true

您如何组织24/7全天候工作的连接池?如何检查池工作进程或刷新它们?

EN

回答 1

Stack Overflow用户

发布于 2012-11-01 10:39:35

让你的连接池受到监督,如果连接出现{error,disconnected}或其他错误,就让它们终止。如果套接字进程由于某种原因没有关闭,您也可以手动停止它。

就我而言,我使用poolboy来做这样的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12747780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档