我们在Ubuntu 14.04上运行Aerospike服务器3.5.15-1并定期从PHP客户端获取服务器连接错误([-1]无法连接到服务器)。 PHP客户端版本3.4.1。我们从一个单独的服务器节点运行PHP 5.3客户端。从php-fpm创建的连接。
服务器日志中没有任何相应的错误,服务器也不必重新启动。所以,问题似乎是在客户端。
此应用程序可创建多达400个同时连接到Aerospike的连接。我们使用r3.xlarge EC2实例,服务器有足够的可用资源。
我们关注了Aerospike调优文档并尝试在服务器上更新proto-fd和推荐的OS patameters,但它没有帮助
proto-fd-max 100000
proto-fd-idle-ms 15000
我们如何初始化和使用Aerospike:
$opts = array(Aerospike::OPT_CONNECT_TIMEOUT => 1250,Aerospike::OPT_WRITE_TIMEOUT => 5000);
$this->db = new Aerospike($config, false, $opts);
//set key
$aero_key = $this->db->initKey($this->keyspace, $this->table, $key);
$aero_value = array("value" => $value);
$status = $this->db->put($aero_key, $aero_value, $ttl, $options);
//get key
$aero_key = $this->db->initKey($this->keyspace, $this->table, $key);
$status = $this->db->get($aero_key, $result);
断开连接之前的Aerospike服务器统计信息:
Aug 27 2015 19:32:50 GMT: INFO (info): (thr_info.c::4828) trans_in_progress: wr 0 prox 0 wait 0 ::: q 0 ::: bq 0 ::: iq 0 ::: dq 0 : fds - proto (237, 16073516, 16073279) : hb (0, 0, 0) : fab (16, 16, 0)
Aug 27 2015 19:33:00 GMT: INFO (info): (thr_info.c::4828) trans_in_progress: wr 0 prox 0 wait 0 ::: q 0 ::: bq 0 ::: iq 0 ::: dq 0 : fds - proto (334, 16076516, 16076182) : hb (0, 0, 0) : fab (16, 16, 0)
Aug 27 2015 19:33:10 GMT: INFO (info): (thr_info.c::4828) trans_in_progress: wr 0 prox 0 wait 0 ::: q 0 ::: bq 0 ::: iq 1 ::: dq 0 : fds - proto (288, 16079478, 16079190) : hb (0, 0, 0) : fab (16, 16, 0)
Aug 27 2015 19:33:20 GMT: INFO (info): (thr_info.c::4828) trans_in_progress: wr 0 prox 0 wait 0 ::: q 0 ::: bq 0 ::: iq 0 ::: dq 0 : fds - proto (131, 16082477, 16082346) : hb (0, 0, 0) : fab (16, 16, 0)
Aug 27 2015 19:33:30 GMT: INFO (info): (thr_info.c::4828) trans_in_progress: wr 0 prox 0 wait 0 ::: q 0 ::: bq 0 ::: iq 0 ::: dq 0 : fds - proto (348, 16084665, 16084317) : hb (0, 0, 0)
答案 0 :(得分:1)
从日志段中,我们可以看到节点上任何时候都有大约300个客户端连接打开,远低于proto-fd-max中的100000个限制。
如果您使用多播进行心跳(我认为你是),心跳为0就可以了。
我希望你已经看过这个,但是你能否在发生故障时检查客户端和服务器之间的网络连接?我知道在正常情况下,客户端和服务器很高兴共存,但在发生故障时,您是否看到任何基本的连接问题?
您是否碰巧在客户端计算机上安装了其他应用程序?他们是否有任何类似的失败,可能是在Aerospike客户问题时?
您是否在多台服务器上安装了客户端?您是否只看到其中一台服务器上的连接错误?
我知道你一直在看这个,所以如果我报道你已经审查过的话题,我会道歉。
感谢您的时间,
-DM