首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Memcached:为什么memcached服务器经常中断连接?

Memcached:为什么memcached服务器经常中断连接?
EN

Stack Overflow用户
提问于 2022-01-25 17:31:13
回答 1查看 208关注 0票数 0

我有两个spring应用程序,在这两个应用程序中,我都使用了间谍缓存。而且memcached客户端是这样创建的

代码语言:javascript
复制
private MemcachedClient buildClient() {
    String address = this.serverAddress;
    MemcachedClient result;
    if (StringUtils.isNotEmpty(address)) {
      log.info("connecting to memcached server {}", address);
 
      try {
        result = new MemcachedClient(
            new ConnectionFactoryBuilder()
                .setTranscoder(new CustomSerializingTranscoder())
                .setProtocol(protocol)
                .setTimeoutExceptionThreshold(2)
                .build(),
            AddrUtil.getAddresses(address));
      } catch (IOException e) {
        throw new IllegalStateException("Can't create client", e);
      }
 
      log.info("connected to memcached server {}", address);
    } else {
      log.warn("cannot initialize memcached client: memcached address is not set");

      result = null;
    }
    return result;
  }

一个spring应用程序put (总是替换一个)键: memcached中的值。另一个人读这把钥匙。而这个不断读取价值的应用程序连接松散。

Memcached配置:

代码语言:javascript
复制
[r.gomboev@netris-gps-stage60-01 netris]$ sudo systemctl status memcached
● memcached.service - Memcached
   Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled; vendor preset: disabled)
   Active: active (running) since Пн 2022-01-24 18:29:39 MSK; 1 day 1h ago
 Main PID: 16747 (memcached)
    Tasks: 6
   Memory: 18.9M
   CGroup: /system.slice/memcached.service
           └─16747 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024 -vv

但一个问题是memcached服务器经常中断连接。

memcached日志:

代码语言:javascript
复制
Jan 25 13:21:50 memcached-server-01 memcached: <33 new auto-negotiating client connection
Jan 25 13:22:44 memcached-server-01 memcached: <33 connection closed.
Jan 25 13:23:19 memcached-server-01 memcached: <33 new auto-negotiating client connection
Jan 25 13:23:33 memcached-server-01 memcached: <33 connection closed.
Jan 25 13:23:55 memcached-server-01 memcached: <33 new auto-negotiating client connection
Jan 25 13:26:34 memcached-server-01 memcached: <33 connection closed.
Jan 25 13:31:36 memcached-server-01 memcached: <33 new auto-negotiating client connection
Jan 25 13:45:03 memcached-server-01 memcached: <33 connection closed.
Jan 25 16:11:43 memcached-server-01 memcached: <33 new auto-negotiating client connection
Jan 25 18:45:12 memcached-server-01 memcached: <33 connection closed.
Jan 25 19:39:36 memcached-server-01 memcached: <33 new auto-negotiating client connection
Jan 25 19:41:11 memcached-server-01 memcached: <33 connection closed.

当我看到通过lsof连接

代码语言:javascript
复制
on app server 81.166
[user@test-dmz-02 ~]$ sudo lsof -i -P -n | grep 11211 | grep 82.80
java      12150      cctv   90u  IPv6 1037210363      0t0  TCP 10.200.81.166:35742->10.200.82.80:11211 (ESTABLISHED)
connection established 

but on memcached server 82.80
[user@memcached-server-01]$ sudo lsof -i -P -n | grep 11211 | grep 81.166
no connection

memcached有下一个统计数据

代码语言:javascript
复制
Escape character is '^]'.
stats
STAT pid 16747
STAT uptime 93258
STAT time 1643131435
STAT version 1.4.15
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 10.729242
STAT rusage_system 17.056611
STAT curr_connections 15
STAT total_connections 62
STAT connection_structures 20
STAT reserved_fds 20
STAT cmd_get 738
STAT cmd_set 84624
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 737
STAT get_misses 1
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 156369146
STAT bytes_written 100524068
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 85
STAT curr_items 1
STAT total_items 84623
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
END

我找不到为什么memcached服务器关闭连接的触发器。有人能告诉我找出解决办法的方法吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-09 13:50:12

我找到了原因。空闲tcp连接由unix系统关闭。param在文件/proc/sys/net/ipv4 4/tcp_net_time(秒内)中。

代码语言:javascript
复制
cat /proc/sys/net/ipv4/tcp_keepalive_time
7200

作为解决方案,如果第一次尝试失败,我尝试另一次尝试连接memcached。

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

https://stackoverflow.com/questions/70853114

复制
相关文章

相似问题

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