日志巡检发现,公司web服务器一直报错,信息如下:
Jul 5 15:40:37 mail kernel: printk: 272 messages suppressed.
Jul 5 15:40:37 mail kernel: TCP: time wait bucket table overflow
Jul 5 15:40:37 mail kernel: TCP: time wait bucket table overflow
Jul 5 15:40:43 mail kernel: printk: 92 messages suppressed.
Jul 5 15:40:43 mail kernel: TCP: time wait bucket table overflow
(TCP:时间等待桶表)
根据报错提示,需要更改net.ipv4.tcp_max_tw_buckets这个内核参数。这个参数是系统同时保持timewait套接字的最大数量。如果超过这个数字,time-wait套接字将立刻被清除并打印警告信息。这个限制仅仅是为了防止简单的
DoS攻击,你绝对不能过分依靠它或者人为地减小这个值,如果网络实际需要大于缺省值,更应该增加这个值(如果增加了内存之后)。
解决方法:增大 tcp_max_tw_buckets的值,并不是这个值越小越好,我看了我系统中TIME_WAIT 大部是由php-fpm产生的,是属于正常的现象
系统在同时所处理的最大timewait sockets 数目。如果超过此数的话﹐time-wait socket
会被立即砍除并且显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的 DoS
攻击﹐千万不要人为的降低这个限制﹐不过﹐如果网络条件需要比默认值更多﹐则可以提高它(或许还要增加内存)。
netstat -an | grep 9000 | awk '{print $6}' | sort | uniq -c | sort -rn
netstat -an | grep 80| awk '{print $6}' | sort | uniq -c | sort -rn
排查步骤:
1. 查看服务器网络连接情况;
[root@mail ~]# netstat -pant |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }'
TIME_WAIT 4944
CLOSE_WAIT 1
FIN_WAIT1 93
FIN_WAIT2 66
ESTABLISHED 292
SYN_RECV 29
CLOSING 32
LAST_ACK 9
LISTEN 14
[root@mail ~]#
2.查看内核参数
vi /etc/sysctl.conf
将net.ipv4.tcp_max_tw_buckets = 5000
改为:net.ipv4.tcp_max_tw_buckets = 10000
3.使更改的内核参数生效
sysctl -p
4. 再次查看服务器网络连接情况;
[root@mail ~]# netstat -pant |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }'
TIME_WAIT 6644
CLOSE_WAIT 1
FIN_WAIT1 93
FIN_WAIT2 66
ESTABLISHED 292
SYN_RECV 29
CLOSING 32
LAST_ACK 9
LISTEN 14
5.
#再看/var/log/messages和dmesg的信息,已经不再报错了,看来net.ipv4.tcp_max_tw_buckets=10000暂时是够用了
6.原因
服务器的TCP连接数,超出了内核定义最大数。
分享到:
相关推荐
桶-通用TCP接受器池版权所有(c)2013BenoîtChesneau。 版本: 2.1 桶是通用的TCP接受器池,在Erlang中具有低延迟。...用法创建一个简单的TCP回显服务器。 创建一个简单的回声处理程序 -module(echo_handler).-ex
http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。
cloudsim-release-gh-pages:来自BitBucket的存储库数据存档
bitbucket-android-gradle-bootstrapper 从 Bitbucket 存储库中的每个 build.gradle 文件下载 Android 元数据。 先决条件 您需要一个特殊的配置文件来为该工具提供有关您的存储库的信息。 [ { " name " : " ...
对Bitbucket服务器命令行的违规注释 向Bitbucket Server报告静态代码分析。 它使用 。 可以在找到可运行的对象。 使用以下命令运行它: npx violation-comments-to-bitbucket-server-command-line \ -pat ...
将BitBucket存储库迁移到Azure DevOps 这会将BitBucket存储库迁移到Azure DevOps。 它将从bitbucket克隆存储库,修改远程源,然后将其推送到Azure DevOps,从而保留所有提交历史记录和分支。 它不会迁移Git LFS。...
Jenkins-Bitbucket 使 Bitbucket 拉取请求与 Jenkins 的相关作业状态保持同步。这个怎么运作该应用程序侦听来自 Jenkins 和 Bitbucket 的网络钩子。 当 Jenkins 作业将其更新状态发送到应用程序时。 当发出拉取请求...
$ npm install s3-bucket 环境变量 S3_BUCKET_ACCESS_KEY_ID=value S3_BUCKET_SECRET_ACCESS_KEY=value S3_BUCKET_NAME=value S3_BUCKET_REGION=value 用法 // Don't forgot to import the function :smiling_...
go-bitbucket 用于golang的Bitbucket-API库。 支持Bitbucket API v2.0。 并且响应类型是JSON格式定义的Bitbucket API。 Bitbucket API v2.0 Swagger for API v2.0 安装go get github.com/ktrysmt/go-bitbucket用法 ...
用卷积滤波器matlab代码DeepLab v2 介绍 DeepLab是基于的最先进的深度学习系统,用于语义图像分割。 它结合了(1)粗糙卷积以显式控制深度卷积神经网络中计算特征响应的分辨率;(2)粗糙空间金字塔池,以多个采样率...
Bitbucket同步工具描述我在bitbucket上有很多项目。 我不想将dir更改为project并键入git fetch,并且我不想每次都克隆它们。 此工具可帮助您自动执行git fetch和git clone存储库。它是如何运作的? 如果目录已经存在...
从BitBucket和GitHub下载所有存储库,包括您的帐户,团队以及创建请求请求的位置。 安装 $ git clone https://github.com/IonicaBizau/repository-downloader.git repo-downloader $ cd repo-downloader $ npm i $ ...
matlab导入excel代码狮身人面像的自述文件 该存储库包含由其各自的作者维护的扩展的集合。 它不是Sphinx的官方部分。 正在安装 在子目录的子目录中使用setup.py作为单个扩展名: cd dir python ...
无服务器Nuxt插件 带有无服务器框架的AWS(Lambda + S3)上的Nuxt。演示版安装使用npm install命令完成npm install :npm i serverless-nuxtnpm i serverless serverless-nuxt-plugin -D 查看以设置您的项目。文件...
================================================== = "bitbucket" 到 bitbucket.org 的命令行界面“ bitbucket”是用python-cliff编写的命令行工具。安装: git 克隆 光盘比特桶python setup.py 安装或者pip 安装...
Bitbucket.js 用于浏览器和Node.js的Bitbucket API客户端 Bitbucket API文档: : BITBUCKET云API最新更新: : 安装 通过npm : $ npm install --save bitbucket 通过纱线: $ yarn add bitbucket 用法 浏览器 ...
用于Bitbucket的Go API客户端(bitbucket-server V1)概述Atlassian的Bitbucket服务器(以前的存储)的API客户端。 此API客户端是由项目生成的。 通过使用远程服务器上的 ,您可以轻松生成API客户端。 API版本: ...
对Bitbucket Cloud命令行的违规评论 向Bitbucket Cloud报告静态代码分析。 它使用 。 可以在找到可运行的对象。 使用以下命令运行它: npx violation-comments-to-bitbucket-cloud-command-line \ -u ...
去做: 修复一些错误添加多下拉列表支持屏幕截图一些模特管理员用法安装包: $ pip install -e hg+https://bitbucket.org/salvator/django-admintools-bootstrap#egg=admintools_bootstrap在admin_tools和django....
Chrome扩展程序,可以直接在Bitbucket拉取请求中查看连续集成系统的构建状态。 安装 导航到商店页面,然后点击“添加到Chrome” 配置 安装完成后,访问扩展程序的“选项”页面并设置您的存储库。 项目 该项目是您的...