Socket 服务器内存占用偏高,服务器内存使用飙升的排查

这几天自己线上的乞丐服务器遇到一个问题,io会瞬间飙升到很高很高,造成内存使用飙升。但是实际上并发量并不大(网络连接数)。知道是哪个进程造成的,但是确实排查代码中没有是么地方会有这么大的读写。实在想不通。

部署的是一个socket服务。用测试脚本跑,同时100个socket连接毫无压力。也不知道对方到底发的什么数据导致这么大的内存占用。

之前也处理过类似的问题。麻烦之处在于很好的定位问题,重现实际的操作。没办法,只能针对socket服务特定的端口进行抓包。希望能够通过数据包复现这种情况。

492bed5eb46fd563897f29859bda3a4c.png

151be2c1ddf95fe4358e605d5ed36967.png

d4f59731d2d884efd5c1632cad8ace0c.png

bc307aead578b1b6dffe2ca9e6bad059.png

0553c0c0ccf157f635c6ca993905a192.png

服务器问题,无非就是资源不合理的使用,造成服务器内存,cpu,io,流量等相关资源出现非常不正常的波动,资源使用率飙升。对于服务器性能问题的排查,没有其他比较好的办法,只能是通过重现复盘去改进。特别是如果服务器上跑的东西比较多,一个个的排查相当痛苦。

出现问题,首先看日志。如果是线上的,先想办法恢复服务再排查。

看看登录日志,访问日志是否有异常,确定是否有人扫机器。

看性能监控图表,分析机器的状况,以及问题发生的规律。

看是否有服务被系统kill。一般系统日志都会记录kill之前的进程列表,可以很好的分析哪些进程资源占用多。

如果还是没找到原因,那就只能抓网络数据。通过记录的网络数据在测试环境中复现线上问题。

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker容器搭建socket服务器可以方便地进行部署和管理。下面是一个简单的步骤: 1.编写Dockerfile文件 首先需要编写一个Dockerfile文件,指定要使用的镜像、安装必要的软件和配置环境变量等,例如: ``` FROM python:3.7-alpine WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "server.py"] ``` 2.编写socket服务器代码 编写socket服务器代码,例如: ``` import socket HOST = '0.0.0.0' PORT = 8080 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() conn, addr = s.accept() with conn: print('Connected by', addr) while True: data = conn.recv(1024) if not data: break conn.sendall(data) ``` 3.构建Docker镜像 在Dockerfile所在目录执行以下命令来构建Docker镜像: ``` docker build -t my-socket-server . ``` 其中,my-socket-server是镜像名称,可以自定义。 4.运行Docker容器 使用以下命令来运行Docker容器: ``` docker run -p 8080:8080 my-socket-server ``` 其中,8080是容器内部端口,也是socket服务器监听的端口,可以自定义;8080是宿主机端口,用于访问socket服务器。 5.测试socket服务器 使用telnet或其他工具来测试socket服务器,例如: ``` telnet localhost 8080 ``` 输入任意字符并回车,可以看到服务器返回该字符。 以上就是使用Docker容器搭建socket服务器的基本步骤,可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值