分类目录归档:专业知识

NGINX压测性能参数

1.NGINX配置文件优化:https://www.cnblogs.com/kevingrace/p/6094007.html

#定义Nginx运行的用户和用户组
user  www  www;
#启动进程,通常设置成和cpu的数量相等
worker_processes  8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
#为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。哪位为1针对具体CPU;---https://www.cnblogs.com/pangbing/p/6537188.htmlhttp://blog.51cto.com/liuqunying/1420556

worker_rlimit_nofile  102400; 
#该指令是当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。---https://blog.csdn.net/Cheng_Kohui/article/details/82924978

#全局错误日志及PID文件
error_log  /usr/local/nginx/logs/error.log info;
#错误日志定义等级,[ debug | info | notice | warn | error | crit ]
pid        /usr/local/nginx/nginx.pid;

#工作模式及连接数上限
events {
use   epoll;                  
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能。
worker_connections  10000;  
#单个后台worker process进程的最大并发链接数 (最大连接数=连接数*进程数)
multi_accept  on;
#尽可能多的接受请求.
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include       mime.types;
default_type  application/octet-stream;
#设定日志格式
access_log    /usr/local/nginx/log/nginx/access.log;
sendfile      on;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用必须设为 on
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime。
#autoindex  on;
#开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on;  
#防止网络阻塞,告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。就是说数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,
keepalive_timeout  65;
#keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时,keepalive-timeout功能可避免建立或重新建立连接。(节省服务器资源、CPU、内存、网卡)切记这个参数也不能设置过大!否则会导致许多无效的http连接占据着nginx的连接数,终nginx崩溃!
tcp_nodelay   on;
参数作用:默认情况下当数据发送时,内核并不会马上发送,可能会等待更多的字节组成一个数据包,这样可以提高I/O性能。但是,在每次只发送很少字节的业务场景
中,使用 tcp_nodelay功能,等待时间会比较长。参数生效条件:激活或禁用 TCP_NODELAY选项,当一个连接进入keep-alive状态时生效。细节见http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout
#提高数据的实时响应性,告诉nginx不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。
#开启gzip压缩
gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.1;
gzip_comp_level  2;
#压缩级别大小,最大为9,值越小,压缩后比例越小,CPU处理更快。
#值越大,消耗CPU比较高。
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;
client_max_body_size 10m;     
#允许客户端请求的最大单文件字节数
client_body_buffer_size 128k;
#缓冲区代理缓冲用户端请求的最大字节数.
proxy_connect_timeout 90;     
#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90;         
#后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90;         
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k;         
#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k;          
#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size  64k;  
#高负荷下缓冲大小(proxy_buffers*2)
#设定请求缓冲
large_client_header_buffers  4 4k;
client_header_buffer_size 4k;
#客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k
#不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
open_file_cache max=102400 inactive=20s;
#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s;
#这个是指多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1;
#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
server_tokens off;隐藏响应头中的有关操作系统和web server(Nginx)版本号的信息,这样对于安全性是有好处的。
#包含其它配置文件,如自定义的虚拟主机
include vhosts.conf;
--开启高效文件传输模式
1)、设置参数:sendfile on;
sendfile参数用于开启文件的高效传输模式。同时将tcp_nopush和tcp_nodelay两个指定设为on,可防止网络及I/O阻塞,提升nginx工作效率。
sendfile参数的官方说明如下:
syntax:    sendfile on | off;                    #参数语法
default:    sendfile off;                       #参数默认大小
context:    http, server, location, if in location      #可以放置的标签段
参数作用:激活或禁用sendfile功能。sendfile是作用于两个文件描述符之间的数据拷贝函数,这个拷贝操作是在内核之中的,被称为"零拷贝", sendfile比read和writ函数要高效很多,因为,read和 wrtie函数要把数据拷贝到应用层再进行操作。相关控制参数还有 sendfile_max_chunk,可以自行查询。细节见http://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile
2)、设置参数:tcp_nopush on;
tcp_nopush参数的官方说明如下:
syntax:    tcp_nopush on | off;        #参数语法
default:   tcp_nopush off;                #参数默认大小
context:   http, server, location        #可以放置的标签段
参数作用:激活或禁用 Linux上的 TCP_CORK socket选项,此选项仅仅当开启sendfile时才生效,激活这个tcp_nopush参数可以允许把http response header和文件的开始部分放在一个文件里发布,其积极的作用是减少网络报文段的数量。细节见http://nginx.org/en/docs/http/ngx_http_core_module.html
参考配置:
http
    {
        ......
        sendfile   on;
        tcp_nopush on;
        ......
    }

—–示例配置:

user   www www;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
error_log   /www/log/nginx_error.log   crit;
pid         /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;
events
{
   use epoll;
   worker_connections 65535;
}
http
{
   include       mime.types;
   default_type   application/octet-stream;
   charset   utf-8;
   server_names_hash_bucket_size 128;
   client_header_buffer_size 2k;
   large_client_header_buffers 4 4k;
   client_max_body_size 8m;
   sendfile on;
   tcp_nopush     on;
   keepalive_timeout 60;
   fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
                 keys_zone=TEST:10m
                 inactive=5m;
   fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
   fastcgi_read_timeout 300;
   fastcgi_buffer_size 16k;
   fastcgi_buffers 16 16k;
   fastcgi_busy_buffers_size 16k;
   fastcgi_temp_file_write_size 16k;
   fastcgi_cache TEST;
   fastcgi_cache_valid 200 302 1h;
   fastcgi_cache_valid 301 1d;
   fastcgi_cache_valid any 1m;
   fastcgi_cache_min_uses 1;
   fastcgi_cache_use_stale error timeout invalid_header http_500;
   open_file_cache max=204800 inactive=20s;
   open_file_cache_min_uses 1;
   open_file_cache_valid 30s;
   tcp_nodelay on;
   
   gzip on;
   gzip_min_length   1k;
   gzip_buffers     4 16k;
   gzip_http_version 1.0;
   gzip_comp_level 2;
   gzip_types       text/plain application/x-javascript text/css application/xml;
   gzip_vary on;
   server
   {
     listen       8080;
     server_name   huan.wangshibo.com;
     index index.php index.htm;
     root   /www/html/;
     location /status
     {
         stub_status on;
     }
     location ~ .*\.(php|php5)?$
     {
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.php;
         include fcgi.conf;
     }
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
     {
       expires       30d;
     }
     log_format   access   '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
     access_log   /www/log/access.log   access;
       }
}

—–参考:https://www.cnblogs.com/wunaozai/p/6073731.html</a–<————-修改日志等级,添加upstream参数————-

Keep-Alive即俗称的长连接,使客户端到服务端建立的连接持续有效,当对服务器发起后续请求时,Keep-Alive功能可以复用先前使用过的连接,减少了重新建立连接所需的开销。通常使用HTTP协议采用的是请求应答模式,客户端到服务端的一次请求完成了,它们之间的连接也随之关闭。在某些应用场景下,比如后端RESTful服务,就需要保持住连接,这时就可以启用HTTP Keep-Alive。
集群upstream参数设置:
# 这里要设置keepalive 表示本机与后端机器的连接数
# 同时这里还有一些其他设置,如权重,负载类型等
upstream wunaozai.cnblogs.com {
    server 192.168.25.106:888;
    server 192.168.25.100:888;
    server 192.168.9.201:888;
    keepalive 1000;
}

server代理设置为:
server {
    listen 88 backlog=168888;
    server_name localhost2;
    location ~ .*$ {
        index index;
        proxy_pass http://wunaozai.cnblogs.com;
        proxy_set_header Connection "keep-alive";
        proxy_http_version 1.1;
        proxy_ignore_client_abort on;
        #下面的timeout跟自己的业务相关设置对应的timeout
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
    }
}

—–参考:https://www.cnblogs.com/shengs/p/4701905.html  upstream性能优化:


—开启nginx性能监控   在server下面添加如下,访问加上/Nginxstatus即可;

location /Nginxstatus {
        stub_status on;
        access_log off;
        }

—参数意义:

Active connections    //当前 Nginx 正处理的活动连接数。
server accepts handledrequests //总共处理了22 个连接 , 成功创建 22 次握手,总共处理了64个请求。
Reading //nginx 读取到客户端的 Header 信息数。
Writing //nginx 返回给客户端的 Header 信息数。
Waiting //开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接

—–如果报错参数不识别,需要重编译添加模块:“nginx: [emerg] unknown directive "stub_status" in /usr/local/openresty/nginx/conf/conf.d/ngx_metric.conf:19”

Nginx没有添加modules/ngx_http_stub_status_module.o模块。
问题解决
没有安装的话,可以在tar包安装编译的时候添加如下参数:
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module

2.关于内核参数的优化,在/etc/sysctl.conf文件内

1)timewait的数量,默认是180000。(Deven:因此如果想把timewait降下了就要把tcp_max_tw_buckets值减小)
net.ipv4.tcp_max_tw_buckets = 6000
2)允许系统打开的端口范围。
net.ipv4.ip_local_port_range = 1024 65000
3)启用TIME-WAIT状态sockets快速回收功能;用于快速减少在TIME-WAIT状态TCP连接数。1表示启用;0表示关闭。但是要特别留意的是:这个选项一般不推荐启用,因为在NAT(Network Address Translation)网络下,会导致大量的TCP连接建立错误,从而引起网站访问故障。
net.ipv4.tcp_tw_recycle = 0
----------------------------------------------------------------------------------------------------------------------------------
实际上,net.ipv4.tcp_tw_recycle功能的开启,要需要net.ipv4.tcp_timestamps(一般系统默认是开启这个功能的)这个开关开启后才有效果;
当tcp_tw_recycle 开启时(tcp_timestamps 同时开启,快速回收 socket 的效果达到),对于位于NAT设备后面的 Client来说,是一场灾难!
会导致到NAT设备后面的Client连接Server不稳定(有的 Client 能连接 server,有的 Client 不能连接 server)。
也就是说,tcp_tw_recycle这个功能,是为内部网络(网络环境自己可控 ” ——不存在NAT 的情况)设计的,对于公网环境下,不宜使用。
通常来说,回收TIME_WAIT状态的socket是因为“无法主动连接远端”,因为无可用的端口,而不应该是要回收内存(没有必要)。
即:需求是Client的需求,Server会有“端口不够用”的问题吗?
除非是前端机,需要大量的连接后端服务,也就是充当着Client的角色。
正确的解决这个总是办法应该是:
net.ipv4.ip_local_port_range = 9000 6553 #默认值范围较小
net.ipv4.tcp_max_tw_buckets = 10000 #默认值较小,还可适当调小
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
----------------------------------------------------------------------------------------------------------------------------------
4)开启重用功能,允许将TIME-WAIT状态的sockets重新用于新的TCP连接。这个功能启用是安全的,一般不要去改动!
net.ipv4.tcp_tw_reuse = 1
5)开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。
net.ipv4.tcp_syncookies = 1
6)web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。https://www.jianshu.com/p/f23150649c26
net.core.somaxconn = 262144
7)每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.netdev_max_backlog = 262144
8)系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_max_orphans = 262144
9)记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
net.ipv4.tcp_max_syn_backlog = 262144
10)时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。
net.ipv4.tcp_timestamps = 1
-----------------------------------------------------------------------------------------------------------------------------------------------------
有不少服务器为了提高性能,开启net.ipv4.tcp_tw_recycle选项,在NAT网络环境下,容易导致网站访问出现了一些connect失败的问题
个人建议:
关闭net.ipv4.tcp_tw_recycle选项,而不是net.ipv4.tcp_timestamps;
因为在net.ipv4.tcp_timestamps关闭的条件下,开启net.ipv4.tcp_tw_recycle是不起作用的;而net.ipv4.tcp_timestamps可以独立开启并起作用。
-----------------------------------------------------------------------------------------------------------------------------------------------------
11)为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_synack_retries = 1
12)在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 1
13)如果套接字由本端要求关闭,这个参数 决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_fin_timeout = 30
14)当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。
net.ipv4.tcp_keepalive_time = 30

—-示例配置—–

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1  //rp_filter参数用于控制系统是否开启对数据包源地址的校验。https://www.cnblogs.com/lipengxiang2009/p/7446388.html
net.ipv4.conf.default.accept_source_route = 0  //是否接受含有源路由信息的ip包
kernel.sysrq = 0  
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1            //这四行标红内容,一般是发现大量TIME_WAIT时的解决办法
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 1            //在net.ipv4.tcp_tw_recycle设置为1的时候,这个选择最好加上
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1           //开启此功能可以减少TIME-WAIT状态,但是NAT网络模式下打开有可能会导致tcp连接错误,慎重。
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_conntrack_max = 6553500

3.其他几个参数:


#################################附录#################################

1.worker_processes详细介绍:https://www.cnblogs.com/tangchuanyang/p/6076725.html

worker_processes :
  worker角色的进程个数(nginx启动后有多少个worker处理http请求。master不处理请求,而是根据相应配置文件信息管理worker进程.   master进程主要负责对外揽活(即接收客户端的请求),并将活儿合理的分配给多个worker,每个worker进程主要负责干活(处理请求))。
   最理想的worker_processes值取决于很多因素,包含但不限于CPU的核数,存储数据的硬盘驱动器个数(跟这个有什么关系?难道和cpu一样,存在跨区域读取数据问题),以及负载模式(?这个是什么?)当其中任何一个因素不确定的时候,将其设置为cpu核数或许是一个比较好的初始值,“自动”也基本是如此确认一个参数值的。“自动”这个参数值是从nginx 1.3.8和nginx 1.2.5 开始进行支持的,自动参数可以自动检测 cpu cores 并设置 worker_processes 参数 。
在网上也看到以下建议:
       nginx doesn't benefit from more than one worker per CPU.
       一个cpu配置多于一个worker数,对nginx而言没有任何益处。
If Nginx is doing CPU-intensive work such as SSL or gzipping and you have 2 or more CPUs/cores, then you may set worker_processes to be equal to the number of CPUs or cores.
    如果nginx处理的是cpu密集型(比较耗费cpu的)的操作,建议将此值设置为cpu个数或cpu的核数。
cpu相关信息查看:
    逻辑CPU个数:
          # cat /proc/cpuinfo | grep "processor" | wc -l
     物理CPU个数:
           # cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
     每个物理CPU中Core的个数:
         # cat /proc/cpuinfo | grep "cpu cores" | wc -l

2.关于max_clients:

从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法:
   nginx作为http服务器的时候:
    max_clients = worker_processes * worker_connections/2
   nginx作为反向代理服务器的时候:
    max_clients = worker_processes * worker_connections/4  (
如果作为反向代理,因为浏览器默认会开启2个连接到server,而且Nginx还会使用fds(file descriptor)从同一个连接池建立连接到upstream后端。

从一般建立连接的角度:客户并发连接为1.
   nginx作为http服务器的时候:
    max_clients = worker_processes * worker_connections
   nginx作为反向代理服务器的时候:
    max_clients = worker_processes * worker_connections/2
nginx做反向代理时,和客户端之间保持一个连接,和后端服务器保持一个连接。

—ab压测工具:-n代表请求数,-c代表并发数,安装:yum install -y httpd-tools,测试结果介绍如下:https://blog.csdn.net/wangshuminjava/article/details/79752202

1. ##首先是apache的版本信息   
2. This is ApacheBench, Version 2.3 <Revision:655654>   
3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.xxx.xxx/
4. Licensed to The Apache Software Foundation, http://www.apache.org/
5.   
6. Benchmarking xxx.xxx.com (be patient)  
7.   
8.   
9. Server Software:    Apache/2.2.19  ##apache版本   
10. Server Hostname:    vm1.xxx.com  ##请求的机子   
11. Server Port:      80 ##请求端口  
12.   
13. Document Path:     /xxx.html   
14. Document Length:    25 bytes ##页面长度  
15.   
16. Concurrency Level:   100 ##并发数   
17. Time taken for tests:  0.273 seconds ##共使用了多少时间   
18. Complete requests:   1000  ##请求数   
19. Failed requests:    0  ##失败请求   
20. Write errors:      0    
21. Total transferred:   275000 bytes ##总共传输字节数,包含http的头信息等   
22. HTML transferred:    25000 bytes ##html字节数,实际的页面传递字节数   
23. Requests per second:  3661.60 [#/sec] (mean) ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量   
24. Time per request:    27.310 [ms] (mean) ##用户平均请求等待时间   
25. Time per request:    0.273 [ms] (mean, across all concurrent requests) ##服务器平均处理时间,也就是服务器吞吐量的倒数   
26. Transfer rate:     983.34 [Kbytes/sec] received ##每秒获取的数据长度  
27.   
28. Connection Times (ms)   
29.        min mean[+/-sd] median  max   
30. Connect:    0  1  2.3   0   16   
31. Processing:   6  25  3.2   25   32   
32. Waiting:    5  24  3.2   25   32   
33. Total:     6  25  4.0   25   48  
34.   
35. Percentage of the requests served within a certain time (ms)   
36.  50%   25 ## 50%的请求在25ms内返回   
37.  66%   26 ## 60%的请求在26ms内返回   
38.  75%   26   
39.  80%   26   
40.  90%   27   
41.  95%   31   
42.  98%   38   
43.  99%   43   
44. 100%   48 (longest request)  

——-windows安装:

下载地址:(https://www.apachehaus.com/cgi-bin/download.plx),选择系统对应版本
## 解压
将解压的bin目录用命令行打开
## 测试ab -n 100 -c 10 http://test_url
# -n 表示请求数,-c 表示并发数. -t 表示多少s内并发和请求

—fastcgi介绍及参数优化:

公共网关接口”(Common Gateway Interface,CGI),是HTTP服务器与本机或者其它机器上的程序进行通信的一种工具,其程序须运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量,如php、perl、tcl等。
FAST-CGI:WEB服务器与处理程序之间通信的一种协议(App server 和Web server 之间的通信协议),是CGI的改进方案。CGI程序反复加载是CGI性能低下的主要原因,如果CGI程序保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。FastCGI是常驻型的CGI,它可以一直运行,在请求到达时,不会花费时间去fork一个进程来处理。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,将CGI解释器进程保持在内存中,以此获得较高的性能。FastCGI是一个协议,php-fpm实现了这个协议,php-fpm的FastCGI协议需要有进程池,php-fpm实现的FastCGI进程叫php-cgi,所以php-fpm其实是他自身的FastCGI或php-cgi进程管理器

——-fastcgi参数优化:

二、关于FastCGI的几个指令
1)这个指令为FastCGI缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
2)指定连接到后端FastCGI的超时时间。
fastcgi_connect_timeout 300;
3)向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_send_timeout 300;
4)接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_read_timeout 300;
5)指定读取FastCGI应答第一部分 需要用多大的缓冲区,这里可以设置为fastcgi_buffers指令指定的缓冲区大小,上面的指令指定它将使用1个 16k的缓冲区去读取应答的第一部分,即应答头,其实这个应答头一般情况下都很小(不会超过1k),但是你如果在fastcgi_buffers指令中指 定了缓冲区的大小,那么它也会分配一个fastcgi_buffers指定的缓冲区大小去缓存。
fastcgi_buffer_size 16k;
6)指定本地需要用多少和多大的缓冲区来 缓冲FastCGI的应答,如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大 于256k的部分会缓存到fastcgi_temp指定的路径中, 当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘,通常这个值 的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值,比如你的站点大部分脚本所产生的页面大小为 256k就可以把这个值设置为16 16k,或者4 64k 或者64 4k,但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理。
fastcgi_buffers 16 16k;
7)这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers的两倍。
fastcgi_busy_buffers_size 32k;
8)在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size 32k;
9)开启FastCGI缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU负载,并且防止502错误。但是这个缓存会引起很多问题,因为它缓存的是动态页面。具体使用还需根据自己的需求。
fastcgi_cache TEST
10)为指定的应答代码指定缓存时间,如上例中将200,302应答缓存一小时,301应答缓存1天,其他为1分钟。
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
11)缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数,如上例,如果在5分钟内某文件1次也没有被使用,那么这个文件将被移除。
fastcgi_cache_min_uses 1;
12)不知道这个参数的作用,猜想应该是让nginx知道哪些类型的缓存是没用的。
fastcgi_cache_use_stale error timeout invalid_header http_500;
-----------------------------------
以上为nginx中FastCGI相关参数,
另外,FastCGI自身也有一些配置需要进行优化,如果你使用php-fpm来管理FastCGI,可以修改配置文件中的以下值:
1)同时处理的并发请求数,即它将开启最多60个子线程来处理并发连接。
<value name="max_children">60</value>
2)最多打开文件数。
<value name="rlimit_files">65535</value>
3)每个进程在重置之前能够执行的最多请求数。
<value name="max_requests">65535</value>

##########报错################

1.apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))  

apr_socket_recv这个是操作系统内核的一个参数,在高并发的情况下,内核会认为系统受到了SYN flood攻击,会发送cookies(possible SYN flooding on port 80. Sending cookies),这样会减慢影响请求的速度,所以在应用服务武器上设置下这个参数为0禁用系统保护就可以进行大并发测试了:
# vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 0
# sysctl -p
然后就可以超过1000个并发测试了。
另附其他系统内核参数说明:
net.ipv4.tcp_syncookies = 0  
#此参数是为了防止洪水攻击的,但对于大并发系统,要禁用此设置
net.ipv4.tcp_max_syn_backlog
#参数决定了SYN_RECV状态队列的数量,一般默认值为512或者1024,即超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。
net.ipv4.tcp_tw_recycle
#参数决定是否加速TIME_WAIT的sockets的回收,默认为0。
net.ipv4.tcp_tw_reuse
#参数决定是否可将TIME_WAIT状态的sockets用于新的TCP连接,默认为0。
net.ipv4.tcp_max_tw_buckets
#参数决定TIME_WAIT状态的sockets总数量,可根据连接数和系统资源需要进行设置。

—报错:apr_socket_recv: Connection refused (111)

一般是网络问题,检查防火墙,我的是防火墙问题;

—报错:Apache ab出现 apr_pollset_poll: The timeout specified has expired 错误,默认30秒,超时;

-s      timeout     Seconds to max. wait for each response
                    Default is 30 seconds
-k      Use HTTP KeepAlive feature

2. nginx:测试时:connection timed out (110: Connection timed out) while proxying connection报错 https://blog.csdn.net/yinxiangbing/article/details/65628763

       proxy_connect_timeout    300;  --原来配置1秒,修改为300秒
       proxy_timeout 300s;

3.NGINX通过lvs连接之后一直刷日志: recv() failed (104: Connection reset by peer) while proxying and reading from client:https://blog.csdn.net/yangguosb/article/details/79793956

经排查原因是keepalived每6s会发送一个健康检查的心跳包,检验端口存在后自动关闭连接;

###########可能原因分析:

(1)TCP成块数据流。服务器端一次性向客户端发送数个数据块,在客户端发出第一个RST报文之后,后续的报文已经在网络中传输了,并陆续达到客户端。https://blog.csdn.net/clirus/article/details/50594688

(2)

4.upstream性能优化:https://www.cnblogs.com/shengs/p/4701905.html   服务器安全:https://www.osyunwei.com/archives/754.html

5.解决10000连接时问题:apr_pollset_poll: The timeout specified has expired (70007),测试压力太大导致,可以带上-k参数https://www.linuxidc.com/Linux/2012-01/52463.htm

ab -k 带上k这个参数,发送keep-alive指令到服务器端

6.配置太大会报错:修改为20480即不报错;

sysctl: setting key "net.core.somaxconn": Invalid argument
net.core.somaxconn = 262144

7.压测报错:先修改配置参数,如果仍然有问题,则继续修改;http://keithmo.me/post/2018/08/25/conntrack-tuning/#%E6%9F%A5%E7%9C%8B-netfilter-%E6%A8%A1%E5%9D%97%E5%8A%A0%E8%BD%BD%E6%97%B6%E7%9A%84%E9%BB%98%E8%AE%A4%E5%80%BC

--net.netfilter.nf_conntrack_buckets 参数是只读的,不能直接改,需要修改模块的设置:
# 改为 262144
echo 262144 | sudo tee /sys/module/nf_conntrack/parameters/hashsize
# 再查看,此时 bucket 已经变成刚才设置的值
sudo sysctl net.netfilter.nf_conntrack_buckets

--net.netfilter.nf_conntrack_max 参考默认值,设为桶的 4 倍:
sudo sysctl net.netfilter.nf_conntrack_max=1048576
# 改完可以看到 net.netfilter.nf_conntrack_max 和 net.nf_conntrack_max 都变了

针对超时时间的修改:

sudo sysctl net.netfilter.nf_conntrack_icmp_timeout=10
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_established=600
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_time_wait=10
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_close_wait=10
sudo sysctl net.netfilter.nf_conntrack_tcp_timeout_last_ack=10

查看:

查看哈希表大小(桶的数量)
sudo sysctl net.netfilter.nf_conntrack_buckets
查看最大跟踪连接数
进来的连接数超过这个值时,新连接的包会被丢弃。
sudo sysctl net.netfilter.nf_conntrack_max
# 默认 nf_conntrack_buckets * 4
# max 是 bucket 的多少倍决定了每个桶里的链表有多长,因此默认链表长度为 4

8.nginx报错:nginx: [warn] the number of “worker_processes” is not equal to the number of “worker_cpu_affinity” masks, using last mask for remaining worker processes,这里主要是因为 我们设置的使用能够nginx的进程数,和指定 的cpu个数不一致导致的

9.windows电脑报错:

4.修改句柄:

1. 防火墙关闭
2. 杀毒软件关闭
3.Jmeter启动参数修改;Heep改大一些
4. 修改操作系统句柄数:
GDIProcessHandleQuota=16384
USERProcessHandleQuota=18000
5. 添加网络端口限制
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
MaxUserPort=65534
TcpTimedWaitDelay=3000

10.内核报错:

[junoN1@node2 nginx]$ sudo tail -f /var/log/messages
[sudo] password for junoN1:
Feb 23 15:30:06 node2 systemd: Started Session 1412 of user junoN1.
Feb 23 15:30:20 node2 systemd-logind: New session 1413 of user junoN1.
Feb 23 15:30:20 node2 systemd: Started Session 1413 of user junoN1.
Feb 23 15:30:23 node2 systemd-logind: Removed session 1413.
Feb 23 16:00:00 node2 systemd: Starting Docker Cleanup...
Feb 23 16:00:00 node2 systemd: Started Docker Cleanup.
Feb 23 16:01:01 node2 systemd: Started Session 1414 of user root.
Feb 23 17:00:00 node2 systemd: Starting Docker Cleanup...
Feb 23 17:00:00 node2 systemd: Started Docker Cleanup.
Feb 23 17:01:01 node2 systemd: Started Session 1415 of user root.
Feb 23 17:41:17 node2 kernel: ------------[ cut here ]------------
Feb 23 17:41:17 node2 kernel: WARNING: at net/sched/sch_generic.c:297 dev_watchdog+0x276/0x280()
Feb 23 17:41:17 node2 kernel: NETDEV WATCHDOG: em1 (tg3): transmit queue 0 timed out
Feb 23 17:41:17 node2 kernel: Modules linked in: ip_vs veth vxlan ip6_udp_tunnel udp_tunnel xt_nat xt_recent ipt_REJECT nf_reject_ipv4 ipt_MASQUERADE nf_nat_masquerade_ipv4 xt_mark overlay(T) xt_addrtype iptable_nat nf_nat_ipv4 nf_nat binfmt_misc ebt_arp ebt_among ip6table_raw nf_conntrack_ipv6 nf_defrag_ipv6 xt_CT xt_mac nf_conntrack_ipv4 nf_defrag_ipv4 xt_comment xt_physdev xt_set xt_conntrack nf_conntrack ip_set_hash_net vhost_net vhost macvtap macvlan tun iptable_raw br_netfilter devlink ebtable_filter ebtables ip6table_filter ip6_tables iptable_filter ip_tables ip_set nfnetlink bridge stp llc intel_powerclamp coretemp intel_rapl iosf_mbi kvm_intel kvm irqbypass crc32_pclmul ghash_clmulni_intel aesni_intel lrw ipmi_ssif gf128mul glue_helper ipmi_devintf mxm_wmi iTCO_wdt iTCO_vendor_support sb_edac ipmi_si edac_core
Feb 23 17:41:17 node2 kernel: pcspkr ipmi_msghandler ablk_helper dcdbas cryptd sg wmi lpc_ich mei_me mei shpchp acpi_power_meter xfs libcrc32c sr_mod cdrom sd_mod crc_t10dif crct10dif_generic mgag200 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect crct10dif_pclmul sysimgblt crct10dif_common fb_sys_fops crc32c_intel ttm drm i2c_core ahci libahci tg3 libata ptp pps_core fjes dm_mirror dm_region_hash dm_log dm_mod [last unloaded: ip_tables]
Feb 23 17:41:17 node2 kernel: CPU: 0 PID: 0 Comm: swapper/0 Tainted: G               ------------ T 3.10.0-514.el7.x86_64 #1
Feb 23 17:41:17 node2 kernel: Hardware name: Dell Inc. PowerEdge R430/0CN7X8, BIOS 2.7.1 01/26/2018
Feb 23 17:41:17 node2 kernel: ffff88085c603d88 6295d15f351f2197 ffff88085c603d40 ffffffff81685fac
Feb 23 17:41:17 node2 kernel: ffff88085c603d78 ffffffff81085820 0000000000000000 ffff88017b048000
Feb 23 17:41:17 node2 kernel: ffff880859144580 0000000000000005 0000000000000000 ffff88085c603de0
Feb 23 17:41:17 node2 kernel: Call Trace:
Feb 23 17:41:17 node2 kernel: <IRQ>  [<ffffffff81685fac>] dump_stack+0x19/0x1b
Feb 23 17:41:17 node2 kernel: [<ffffffff81085820>] warn_slowpath_common+0x70/0xb0
Feb 23 17:41:17 node2 kernel: [<ffffffff810858bc>] warn_slowpath_fmt+0x5c/0x80
Feb 23 17:41:17 node2 kernel: [<ffffffff81596136>] dev_watchdog+0x276/0x280
Feb 23 17:41:17 node2 kernel: [<ffffffff81595ec0>] ? dev_graft_qdisc+0x80/0x80
Feb 23 17:41:17 node2 kernel: [<ffffffff81095976>] call_timer_fn+0x36/0x110
Feb 23 17:41:17 node2 kernel: [<ffffffff81595ec0>] ? dev_graft_qdisc+0x80/0x80
Feb 23 17:41:17 node2 kernel: [<ffffffff81098667>] run_timer_softirq+0x237/0x340
Feb 23 17:41:17 node2 kernel: [<ffffffff8108f0ff>] __do_softirq+0xef/0x280
Feb 23 17:41:17 node2 kernel: [<ffffffff8169805c>] call_softirq+0x1c/0x30
Feb 23 17:41:17 node2 kernel: [<ffffffff8102d365>] do_softirq+0x65/0xa0
Feb 23 17:41:17 node2 kernel: [<ffffffff8108f495>] irq_exit+0x115/0x120
Feb 23 17:41:17 node2 kernel: [<ffffffff81698cd5>] smp_apic_timer_interrupt+0x45/0x60
Feb 23 17:41:17 node2 kernel: [<ffffffff8169721d>] apic_timer_interrupt+0x6d/0x80
Feb 23 17:41:17 node2 kernel: <EOI>  [<ffffffff810b45a6>] ? hrtimer_start_range_ns+0x1c6/0x390
Feb 23 17:41:17 node2 kernel: [<ffffffff81514052>] ? cpuidle_enter_state+0x52/0xc0
Feb 23 17:41:17 node2 kernel: [<ffffffff81514048>] ? cpuidle_enter_state+0x48/0xc0
Feb 23 17:41:17 node2 kernel: [<ffffffff81514199>] cpuidle_idle_call+0xd9/0x210
Feb 23 17:41:17 node2 kernel: [<ffffffff8103516e>] arch_cpu_idle+0xe/0x30
Feb 23 17:41:17 node2 kernel: [<ffffffff810e7c95>] cpu_startup_entry+0x245/0x290
Feb 23 17:41:17 node2 kernel: [<ffffffff81674407>] rest_init+0x77/0x80
Feb 23 17:41:17 node2 kernel: [<ffffffff81b0a05a>] start_kernel+0x42c/0x44d
Feb 23 17:41:17 node2 kernel: [<ffffffff81b09a37>] ? repair_env_string+0x5c/0x5c
Feb 23 17:41:17 node2 kernel: [<ffffffff81b09120>] ? early_idt_handlers+0x120/0x120
Feb 23 17:41:17 node2 kernel: [<ffffffff81b095ee>] x86_64_start_reservations+0x2a/0x2c
Feb 23 17:41:17 node2 kernel: [<ffffffff81b09742>] x86_64_start_kernel+0x152/0x175
Feb 23 17:41:17 node2 kernel: ---[ end trace 1b67ae44361688bf ]---
Feb 23 17:41:17 node2 kernel: tg3 0000:02:00.0 em1: transmit timed out, resetting
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000000: 0x165f14e4, 0x00100406, 0x02000000, 0x00800008
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000010: 0x91a3000c, 0x00000000, 0x91a4000c, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000020: 0x91a5000c, 0x00000000, 0x00000000, 0x06391028
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000030: 0xfffc0000, 0x00000048, 0x00000000, 0x0000010e
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000040: 0x00000000, 0xb9000000, 0xc8035001, 0x00003008
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000050: 0x818c5803, 0x78000000, 0x0086a005, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000060: 0x00000000, 0x00000000, 0xf0000298, 0x00380081
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000070: 0x000710b0, 0x00400000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000080: 0x165f14e4, 0x800000f8, 0x00000000, 0x00000784
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000090: 0x00000000, 0x00000000, 0x00000000, 0x00000615
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000000a0: 0x8010ac11, 0x00000004, 0x00001004, 0x00020010
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000000b0: 0x10008d81, 0x0010540e, 0x0004cc22, 0x10120040
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000000d0: 0x0000001f, 0x00000006, 0x00000000, 0x00000001
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000000f0: 0x00000000, 0x05720000, 0x00000000, 0x78b0600a
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000100: 0x13c10001, 0x00000000, 0x00018000, 0x000e7030
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000110: 0x00002000, 0x000031c0, 0x000001e0, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000130: 0x00000000, 0x00000000, 0x00000000, 0x15010003
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000140: 0x666ffcd5, 0x0000d094, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000150: 0x16010004, 0x00000000, 0x0007811b, 0x00000001
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000160: 0x00010002, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000170: 0x00000000, 0x800000ff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000200: 0x00000000, 0xb9000000, 0x00000000, 0xfc000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000210: 0x00000000, 0xa0000000, 0x00000000, 0x7d000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000220: 0x00000000, 0x07000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000260: 0x00000000, 0x00000000, 0x00000000, 0x00000615
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000280: 0x00000000, 0x00000784, 0x00000000, 0x00000efb
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000290: 0x00000000, 0x000005e4, 0x00000000, 0x000000ea
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000300: 0x00000000, 0x00000003, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000400: 0x18e04804, 0x00400000, 0x00001000, 0x00000900
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000410: 0x0000d094, 0x666ffcd5, 0x0000d094, 0x666ffcd5
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000420: 0x0000d094, 0x666ffcd5, 0x0000d094, 0x666ffcd5
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000430: 0x00000400, 0x00000000, 0x000002e4, 0x000005f2
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000440: 0x00000000, 0x00000000, 0x00000000, 0x082a0000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000450: 0x00000001, 0x00008000, 0x00000000, 0x00000112
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000460: 0x00000008, 0x00002620, 0x01ff0006, 0x00000007
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000470: 0x80000080, 0x00000000, 0x00000000, 0x40000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000480: 0x42000000, 0x7fffffff, 0x06000004, 0x7fffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000500: 0x00000008, 0x00000002, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000540: 0x0000d094, 0x666ffcd9, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000590: 0x00e00000, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000005b0: 0x00000000, 0x00000008, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000005c0: 0x766f37e8, 0x94367ea7, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000600: 0xffffffff, 0x00f80054, 0x00000000, 0x00001f04
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000610: 0xffffffff, 0x00000000, 0xc14e0344, 0x47fffe31
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000620: 0x00000440, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000630: 0x01230123, 0x01230123, 0x01230123, 0x01230123
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000640: 0x01230123, 0x01230123, 0x01230123, 0x01230123
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000650: 0x01230123, 0x01230123, 0x01230123, 0x01230123
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000660: 0x01230123, 0x01230123, 0x01230123, 0x01230123
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000670: 0x599439ad, 0x1ddee7db, 0x587c10b6, 0xf6669676
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000680: 0x72a8d6ff, 0x202215af, 0xa3edb5ba, 0x48baaff8
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000690: 0x7267bc0f, 0x85349f38, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000006c0: 0x00000000, 0x00000000, 0x04000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000006d0: 0x00000001, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000800: 0x00000000, 0xffffffff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000810: 0x00000000, 0xffffffff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000820: 0x00000000, 0x00000000, 0xffffffff, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000830: 0x00000000, 0xffffffff, 0xffffffff, 0xffffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000840: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000850: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000860: 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000880: 0x000000c0, 0x00239508, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000008a0: 0x00000000, 0x00000003, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000008f0: 0x00000001, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000900: 0x010e6071, 0xffffffff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000910: 0x00000000, 0xffffffff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000920: 0x00000000, 0x00000000, 0xffffffff, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000930: 0x00000000, 0xffffffff, 0xffffffff, 0xffffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000940: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000950: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000960: 0xffffffff, 0xffffffff, 0xffffffff, 0x0000fb1e
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000980: 0x00000e82, 0x00000000, 0x00000000, 0x00013989
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000990: 0x0000003d, 0x00000006, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000009a0: 0x00000050, 0x000000bb, 0x00000000, 0x0000d02a
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000c00: 0x0000000a, 0x00000000, 0x00000003, 0x00000001
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000c10: 0x00000000, 0x00000007, 0x00000000, 0x01390000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000c80: 0x07265dbe, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000ce0: 0x103730ce, 0x00000000, 0x00000139, 0x00041028
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00000cf0: 0x00000000, 0x50000055, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001000: 0x00000002, 0x00000000, 0xa000bfc2, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001010: 0x51ce1cf1, 0x0000bfc2, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001400: 0x00000006, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001440: 0x000001d6, 0x000001d6, 0x000001d6, 0x000001d6
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001450: 0x000001d6, 0x000001d6, 0x000001d6, 0x000001d6
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001460: 0x000001d6, 0x000001d6, 0x000001d6, 0x000001d6
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001470: 0x000001d6, 0x000001d6, 0x000001d6, 0x000001d6
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001480: 0x00001114, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001800: 0x00000016, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001830: 0x00000000, 0x00000000, 0x00000000, 0x4be74000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001840: 0x4be74000, 0x00000008, 0x10000211, 0xc0000001
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001850: 0x0000001f, 0x00000000, 0x000043f0, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001860: 0x01000100, 0x00000000, 0x4be75ff0, 0x00000008
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00001c00: 0x00000002, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002000: 0x00000002, 0x00000010, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002010: 0x00000181, 0x00000001, 0x00780003, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002100: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002110: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002120: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002130: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002140: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002150: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002160: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002170: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002180: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002190: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000021a0: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000021b0: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000021c0: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000021d0: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000021e0: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000021f0: 0x00085229, 0x00085229, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002200: 0x09dda732, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002250: 0x000026c9, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002400: 0x00010012, 0x00000000, 0x00240001, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002410: 0x0000000f, 0x00005d00, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002440: 0x00000000, 0x00000000, 0x00000002, 0x00044400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002450: 0x00000008, 0x54e30000, 0x08001800, 0x00040000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002470: 0x00000000, 0x0000054d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002500: 0x00000000, 0x00000000, 0x00000002, 0x00044800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002510: 0x00000000, 0x00000000, 0x00000002, 0x00040400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002520: 0x00000000, 0x00000000, 0x00000002, 0x00044c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002530: 0x00000000, 0x00000000, 0x00000002, 0x00040800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002540: 0x00000000, 0x00000000, 0x00000002, 0x00045000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002550: 0x00000000, 0x00000000, 0x00000002, 0x00040c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002560: 0x00000000, 0x00000000, 0x00000002, 0x00045400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002570: 0x00000000, 0x00000000, 0x00000002, 0x00041000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002580: 0x00000000, 0x00000000, 0x00000002, 0x00045800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002590: 0x00000000, 0x00000000, 0x00000002, 0x00041400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000025a0: 0x00000000, 0x00000000, 0x00000002, 0x00045c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000025b0: 0x00000000, 0x00000000, 0x00000002, 0x00041800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000025c0: 0x00000000, 0x00000000, 0x00000002, 0x00046000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000025d0: 0x00000000, 0x00000000, 0x00000002, 0x00041c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000025e0: 0x00000000, 0x00000000, 0x00000002, 0x00046400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000025f0: 0x00000000, 0x00000000, 0x00000002, 0x00042000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002600: 0x00000000, 0x00000000, 0x00000002, 0x00046800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002610: 0x00000000, 0x00000000, 0x00000002, 0x00042400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002620: 0x00000000, 0x00000000, 0x00000002, 0x00046c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002630: 0x00000000, 0x00000000, 0x00000002, 0x00042800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002640: 0x00000000, 0x00000000, 0x00000002, 0x00047000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002650: 0x00000000, 0x00000000, 0x00000002, 0x00042c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002660: 0x00000000, 0x00000000, 0x00000002, 0x00047400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002670: 0x00000000, 0x00000000, 0x00000002, 0x00043000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002680: 0x00000000, 0x00000000, 0x00000002, 0x00047800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002690: 0x00000000, 0x00000000, 0x00000002, 0x00043400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000026a0: 0x00000000, 0x00000000, 0x00000002, 0x00047c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000026b0: 0x00000000, 0x00000000, 0x00000002, 0x00043800
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000026c0: 0x00000000, 0x00000000, 0x00000002, 0x00048000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000026d0: 0x00000000, 0x00000000, 0x00000002, 0x00043c00
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000026e0: 0x00000000, 0x00000000, 0x00000002, 0x00048400
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000026f0: 0x00000000, 0x00000000, 0x00000002, 0x00044000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002800: 0x00000006, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002c00: 0x00000006, 0x00000000, 0x00000000, 0x000005cd
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002c10: 0x00000000, 0x00000000, 0x00000019, 0x0000000c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002c20: 0x00000001, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00002d00: 0x00000080, 0x00000040, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003000: 0x00000006, 0x00000000, 0x00000000, 0x000005cd
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003400: 0x00000006, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003600: 0x00004600, 0x00170000, 0x00110000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003610: 0x00170000, 0x00000000, 0x00130000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003620: 0x00110011, 0x00000000, 0x00000000, 0x000b2080
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003630: 0x00910000, 0x87748774, 0x02c01000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003640: 0x00000000, 0x00000000, 0x00000020, 0x00000019
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003650: 0x00000171, 0x000f03ff, 0x05720000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003660: 0x00000000, 0x00000000, 0x02000000, 0x00000202
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003670: 0x00000000, 0xfef7afe3, 0x00000000, 0x00000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003680: 0x20018010, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000036a0: 0x000001a0, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000036b0: 0x0010034c, 0x07ff07ff, 0x07ff07ff, 0x01000004
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000036c0: 0xfffffffe, 0x00000000, 0x00000000, 0x020b6461
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000036d0: 0x00000384, 0x00000000, 0x00000000, 0x00004861
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000036f0: 0x00000000, 0x00000000, 0x00000000, 0x00013701
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003800: 0x00000001, 0x00000000, 0x0000000e, 0x0516028b
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003810: 0x000001fd, 0x000000ff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c00: 0x00000306, 0x00000000, 0x00000000, 0x00000048
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c10: 0x00000000, 0x00000035, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c20: 0x00000000, 0x00000005, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c30: 0x00000000, 0x00000000, 0x00000008, 0x4ba59000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c40: 0x00000000, 0x00000b00, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c50: 0x00000000, 0x0000054d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003c80: 0x00000784, 0x00000efb, 0x000005e4, 0x000000ea
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003cc0: 0x000001ce, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003cd0: 0x00000000, 0x0000000f, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003d00: 0x00000008, 0x4ba5a000, 0x00000008, 0x4ba5b000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003d10: 0x00000008, 0x4ba5c000, 0x00000008, 0x4ba5d000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003d80: 0x00000014, 0x00000000, 0x00000005, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003d90: 0x00000005, 0x00000000, 0x00000014, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003da0: 0x00000005, 0x00000000, 0x00000005, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003db0: 0x00000014, 0x00000000, 0x00000005, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003dc0: 0x00000005, 0x00000000, 0x00000014, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003dd0: 0x00000005, 0x00000000, 0x00000005, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00003fc0: 0x00494fd9, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004000: 0x00000002, 0x00000000, 0x001fbfcb, 0x000d15db
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004010: 0x00000000, 0x00231012, 0x000004f0, 0x00853442
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004020: 0x00000000, 0x00000000, 0x00000010, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004030: 0x00000010, 0x00000050, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004040: 0x00000000, 0x00000000, 0x01082820, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004050: 0x00000000, 0x00000000, 0x00216010, 0x00457002
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004060: 0x0045c000, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004400: 0x00000016, 0x00000000, 0x00010000, 0x0000a000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004410: 0x00000000, 0x0000002a, 0x000000a0, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004420: 0x0000003d, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004440: 0x00000000, 0x00000000, 0x00000000, 0x05b188c8
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004450: 0x0002dd3f, 0x00320033, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004800: 0x380303fe, 0x00000000, 0x00000000, 0x00000120
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004810: 0x00000000, 0x0000000a, 0x00428ef0, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004820: 0x0000005c, 0x00000000, 0xf03b0000, 0xfb3b0d50
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004830: 0x00000000, 0x00000032, 0x00000032, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004840: 0x009083bb, 0x009083bb, 0x000e2200, 0x5c42e2b5
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004850: 0x7a238878, 0x17050248, 0x57565756, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004860: 0x02f8005c, 0x443cd094, 0x00100000, 0x86000408
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004870: 0x05ea4a83, 0x003e1820, 0x003e1820, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004880: 0x0000d094, 0x666ffcd9, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004900: 0x28190404, 0x00305407, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004910: 0x000f001c, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a00: 0x180303fe, 0x00200000, 0x00200020, 0x7c5a0000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a10: 0x54e3b940, 0x008c5914, 0x00200011, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a20: 0x00000000, 0x00000000, 0xf02c0000, 0x54e3b9a0
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a30: 0x00000000, 0x00000134, 0x00000134, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a40: 0x54e3b920, 0x54e3b940, 0x54e3b8e0, 0x54e3b900
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a50: 0x00200020, 0x00200020, 0x00200020, 0x00200020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004a70: 0x28190404, 0x00305407, 0x000f001c, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b00: 0x180303fe, 0x00420003, 0x30480000, 0x004a01e0
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b10: 0x004a0552, 0x004a0503, 0x0042cef4, 0x0a00128c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b20: 0x000000c7, 0x02618000, 0x2f7a44c9, 0x0f420048
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b30: 0x1cf830c1, 0x0f4a0050, 0x2f7a78c1, 0x0f4a0050
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b40: 0x18f6ecc1, 0x0f4a0050, 0x07fdb7ae, 0x948a01f7
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b50: 0xf03b0000, 0x2f7a4510, 0xef050000, 0xc7c300c6
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b60: 0xf03b0000, 0x1cf83110, 0xef050000, 0x400001d0
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b70: 0xf03b0000, 0x2f7a7910, 0xef050000, 0x000000ff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b80: 0x02f800c3, 0x443cd094, 0x00100000, 0x86000408
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004b90: 0x05ea4a83, 0x28190404, 0x00305407, 0x000f001c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004ba0: 0x00f0004d, 0x02f800c3, 0x443cd094, 0x000f001c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004bb0: 0xb96fa9c9, 0xb96fa1c9, 0xb96fe1c9, 0xcbae99c9
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004bc0: 0x2f7a44ce, 0x1cf830c6, 0x2f7a78c6, 0x18f6ecc6
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004bd0: 0xb96fa8ce, 0xb96fa0ce, 0xb96fe0ce, 0xcbae98ce
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004be0: 0x004a0042, 0x004a004a, 0x01480147, 0x014d0148
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004bf0: 0xf03b0000, 0x18f6ed10, 0xef050000, 0x0000ffff
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c00: 0x200003fe, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c10: 0x0000003f, 0x00000000, 0x00000006, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c20: 0x00000000, 0x00000000, 0x00000000, 0x00000006
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c30: 0x00000000, 0x01790000, 0x00108000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c40: 0x00000020, 0x00000000, 0x001d0020, 0x00140020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c50: 0xe3efa783, 0x007830e9, 0xea5e4efb, 0x214db9b9
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00004c60: 0x00000020, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005000: 0x00009800, 0x80004000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005010: 0x00000000, 0x00000000, 0x00000000, 0x08002044
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005020: 0x27bdffe8, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005030: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005040: 0x00000000, 0x00000000, 0x08002018, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005080: 0x00009800, 0x80004000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005090: 0x00000000, 0x00000000, 0x00000000, 0x0800187c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000050a0: 0xafa40014, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000050b0: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000050c0: 0x00000000, 0x00000000, 0x08001860, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005100: 0x00009800, 0x80004000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005110: 0x00000000, 0x00000000, 0x00000000, 0x08001824
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005120: 0x0062102b, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005130: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005140: 0x00000000, 0x00000000, 0x08002010, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005180: 0x00009800, 0x80004000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005190: 0x00000000, 0x00000000, 0x00000000, 0x08001ff4
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000051a0: 0xafa40000, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000051b0: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000051c0: 0x00000000, 0x00000000, 0x08000088, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005200: 0x06000000, 0x00000000, 0x00000b50, 0x00000015
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005210: 0xc0000000, 0x14600027, 0x08000000, 0xaee02de8
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005220: 0x08006f90, 0x02515f00, 0x08006f98, 0x144001e5
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005230: 0x08006f98, 0x21020000, 0x08000000, 0x80000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005240: 0x14600027, 0x00000000, 0x08000000, 0x02515f1b
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005250: 0x08006f90, 0xc0000000, 0x08006f98, 0x00000b50
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005260: 0x00000015, 0xc0000000, 0x14600027, 0x08000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005270: 0xaee02de8, 0x08006f90, 0x02515f00, 0x08006f98
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005280: 0x00009800, 0x80004000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005290: 0x00000000, 0x00000000, 0x00000000, 0x08001fc4
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000052a0: 0x14400005, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000052b0: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000052c0: 0x00000000, 0x00000000, 0x08000088, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005300: 0x00009800, 0x80004000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005310: 0x00000000, 0x00000000, 0x00000000, 0x08001fac
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005320: 0x00021f02, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005330: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005340: 0x00000000, 0x00000000, 0x08000088, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005380: 0x00009800, 0x80000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005390: 0x00000000, 0x00000000, 0x00000000, 0x08001f88
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000053a0: 0x8c434014, 0x00000000, 0x00000000, 0x40000020
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000053b0: 0x00000000, 0x0000001d, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000053c0: 0x00000000, 0x00000000, 0x08000088, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005800: 0xb9000000, 0xb9000000, 0xfc000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005810: 0xa0000000, 0x00000000, 0x7d000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005820: 0x07000000, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005860: 0x00000000, 0x00000000, 0x00000615, 0x00000615
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005880: 0x00000784, 0x00000784, 0x00000efb, 0x00000efb
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005890: 0x000005e4, 0x000005e4, 0x000000ea, 0x000000ea
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005900: 0x00000003, 0x00000003, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00005a00: 0x000f601f, 0x00000000, 0x00010000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006000: 0x00010082, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006400: 0x00000000, 0x00000000, 0x00010891, 0xc0000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006410: 0x0a000064, 0x0a000064, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006420: 0x00000000, 0x00000000, 0x00000000, 0x818c0000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006430: 0x78000000, 0x14e4165f, 0x06391028, 0x00020000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006440: 0x0000304f, 0x000002e4, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000064c0: 0x00000010, 0x00000004, 0x00001004, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000064d0: 0x00000000, 0x10008d81, 0x00000000, 0x00315e22
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000064e0: 0x00000031, 0x0000001f, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000064f0: 0x00000002, 0x00000031, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006500: 0x01e10003, 0x666ffcd5, 0x0000d094, 0x00000003
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006510: 0x0007811b, 0x00058116, 0x00046113, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006550: 0x00000001, 0x02800000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000065f0: 0x00000000, 0x00000109, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006800: 0x141b0034, 0x20099082, 0x01069208, 0x1d479ac2
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006810: 0x21020000, 0xffffffff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006830: 0xffffffff, 0xffffffff, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006840: 0x00000000, 0x00000001, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006890: 0x00000000, 0x88003800, 0x00000000, 0x04102040
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000068a0: 0x00000020, 0x00000001, 0x03ff03ff, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000068b0: 0xe0011514, 0x00000000, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000068e0: 0x00000000, 0x00000000, 0x00000000, 0x0005c49c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x000068f0: 0x00ff000e, 0x00ff0000, 0x00000000, 0x04444444
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006900: 0x7bb27698, 0x1585f4d2, 0x00000000, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00006920: 0x00000000, 0x00000000, 0x00000001, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00007000: 0x00000008, 0x00000000, 0x00000000, 0x00004a4c
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00007010: 0xf8ba8764, 0x01c080f3, 0x00d70081, 0x03008200
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00007020: 0x00000000, 0x00000000, 0x00000406, 0x10004000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0x00007030: 0x000e0000, 0x00004a50, 0x00170030, 0x00000000
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0: Host status block [00000001:000000b9:(0000:053c:0000):(0000:01ce)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 0: NAPI info [000000b9:000000b9:(0003:01ce:01ff):0000:(0617:0000:0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 1: Host status block [00000001:000000fd:(0000:0000:0000):(0785:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 1: NAPI info [000000fd:000000fd:(0000:0000:01ff):0785:(0785:0785:0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 2: Host status block [00000001:000000a1:(0efc:0000:0000):(0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 2: NAPI info [000000a1:000000a1:(0000:0000:01ff):0efc:(06fc:06fc:0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 3: Host status block [00000001:0000007d:(0000:0000:0000):(0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 3: NAPI info [0000007d:0000007d:(0000:0000:01ff):05e4:(05e4:05e4:0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 4: Host status block [00000001:00000007:(0000:0000:00ea):(0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: 4: NAPI info [00000007:00000007:(0000:0000:01ff):00ea:(00ea:00ea:0000:0000)]
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0: tg3_stop_block timed out, ofs=1400 enable_bit=2
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0: tg3_stop_block timed out, ofs=c00 enable_bit=2
Feb 23 17:41:18 node2 kernel: tg3 0000:02:00.0 em1: Link is down
Feb 23 17:41:20 node2 kernel: tg3 0000:02:00.0 em1: Link is up at 100 Mbps, full duplex
Feb 23 17:41:20 node2 kernel: tg3 0000:02:00.0 em1: Flow control is on for TX and on for RX
Feb 23 17:41:20 node2 kernel: tg3 0000:02:00.0 em1: EEE is disabled
Feb 23 17:41:20 node2 NetworkManager[801]: <info>  [1550914880.6682] device (em1): link connected

—-41终端出现:Feb 25 00:09:42 node1 kernel: perf: interrupt took too long (2508 > 2500), lowering kernel.perf_event_max_sample_rate to 79000,原文:https://blog.csdn.net/megan_free/article/details/84993547

perf_cpu_time_max_percent:    perf分析工具最大能够占用CPU性能的百分比0:不限制1~100:百分比值
perf_event_max_sample_rate:    设置perf_event的最大取样速率,默认值为100000
perf采样使用会占用cpu,所以默认限制最大是perf_cpu_time_max_percent=25
超过就会触发上面这个告警,并调整采样速率,保持不要超过限制,也就是说如果你设置了perf_event_max_sample_rate。
那么出现上面这个告警后,perf_event_max_sample_rate的值会被调整。
可以通过调高perf_cpu_time_max_percent来解决。
如果调高也不能解决,就设置为0,此时就不会在去监控cpu的占用率了。

#######################引用和参考@@@@@@@@@@@@@

############

https://www.cnblogs.com/yzhming/p/4890543.html

nginx 的性能优化,TCP协议有哪些参数,怎么优化  http://blog.chinaunix.net/uid-25266990-id-2985541.html

keepalived 的调优,网络设置,

nginx.conf很全的配置文件:https://www.cnblogs.com/liang-wei/p/5849771.html

内核参数介绍:http://www.360doc.com/content/14/0606/16/3300331_384326124.shtml

nginx四层负载介绍:https://cloud.tencent.com/developer/article/1027563

stream的一些配置项:https://blog.csdn.net/u011218159/article/details/50966861

优化:https://www.cnblogs.com/Mr-Ding/p/9568932.html

关于tcp连接的几点思考:https://blog.csdn.net/solstice/article/details/6579232

最大客户连接数的思考:https://www.cnblogs.com/verrion/p/nginx_maximum_client_connections.html

tcp四次握手为什么要两倍MSL:https://blog.csdn.net/wsyw126/article/details/70050297

time_wait的思考:https://blog.csdn.net/zj6257/article/details/78655642

ngx_stream_limit_conn_module模块(1.9.3)被用于限制每个定义的键连接的数量,尤其是,从一个单一的IP地址的连接的数量。https://cloud.tencent.com/developer/section/1259615 http://www.ttlsa.com/nginx/nginx-limited-connection-number-ngx_http_limit_conn_module-module/

epoll最大连接:https://blog.csdn.net/wangcg123/article/details/54928366

3万并发:https://blog.csdn.net/davidstar1988/article/details/80506775

nginx虚拟主机:https://www.cnblogs.com/ssgeek/p/9220922.html

####################

wordpress服务器镜像化改造

firstly:backup:

mysqlbackup:整库备份,我用的是Navicat把数据导出来;
WordPressbackup:wordpress图片和主题都在wp-content这个目录下,我们只需要备份这个目录即可。

1.安装最新版的docker:

--卸载旧版本: yum remove docker                   docker-common                   docker-selinux                   docker-engine
--安装依赖:yum install -y yum-utils device-mapper-persistent-data lvm2
--更新yum文件:yum-config-manager      --add-repo      https://download.docker.com/linux/centos/docker-ce.repo
--yum makecache fast
--安装:yum install docker-ce

2.因为wordpress需要使用多个docker镜像,所以在此我们使用docker-compose编排工具,进行管理。

安装docker-compose,使用如下命令:

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose –version

3.拉取两个镜像:

docker pull mysql
docker pull wordpress

#########日常维护#################

#############报错汇总##########################

(1)docker-compose:

–version使用单引号时报错,使用双引号问题解决,查看具体版本使用docker-compose version

ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

–格式问题报错:有时候直接从网上拷贝的话,某些特殊符号比如-等就会出现是中文字符;而且报错挺明显的,这些地方都有这个符号;

[root@VM_0_11_centos docker_compose]# docker-compose up -d
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.mysqldb.volumes contains an invalid type, it should be an array
services.wordpress.volumes contains an invalid type, it should be an array
services.mysqldb.ports contains an invalid type, it should be an array
services.wordpress.ports contains an invalid type, it should be an array
services.wordpress.depends_on contains an invalid type, it should be an array

–不同的服务不能包含:看清报错描述;    

ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.mysqldb: 'wordpress'

(2)mysql报错:关联数据目录重新建镜像的时候记得删除;

[ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!

—最大文件大小:修改配置文件max_allowed_packet=400M

[ERR] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
[ERR]

(3)迁移的时候,图片是保存在wp-comment路径下的,记得备份;

(4)mysql执行报错,去排查原因,看日志,再一次犯了之前盲目的错,怀疑是数据库版本问题,白白浪费时间;不要主观臆断,如果怀疑,请找到数据,否则,不要逼逼!

–报错1,插入时间格式问题报错:参考网上修改之后还有问题,直接修改数据文件,保存后导入;

Incorrect datetime value: '0000-00-00 00:00:00' for column

—网上修改方案:https://www.cnblogs.com/huanhang/p/7050757.html

show variables like ‘%sql_mode%’;
set global sql_mode=’STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER’;

(5)界面英文无法修改或者下载插件时提示ftp:“To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host”解决方法:修改/var/www/html文件夹的权限;

chown -R www-data:www-data /var/www/html

(6)图片超过大小限制:

新建一个php.ini文件,在你的主机空间的根目录新建一个php.ini文件,里面使用如下代码。
复制代码
代码如下:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

(7)docker和主机之间文件的传输:https://blog.csdn.net/leafage_m/article/details/72082011

docker cp 本地文件路径 ID全称:容器路径
docker cp baidu_verify_5n6o8JrbR2.html 7c86cef8780c752c1813b4fc67f7a29426afd61a295e9dc12c15a9df92229d6c:/var/www/html/baidu_verify_5n6o8JrbR2.html

--获得全称使用:docker inspect -f '{{.Id}}' roarlion_wordpress
从容器拷贝到主机上,则相反:
--docker cp ID全称:容器文件路径 本地路径

(8)Apache启动报错:Invalid command '*module', perhaps misspelled or defined by a module not inclu ded in t,经过排查,发现模块被删掉了;

#############引用和参考##################################

迁移:https://www.ilanni.com/?p=12889

keepalived日志修改路径:https://blog.csdn.net/liyuling52011/article/details/80033229

lamp:https://blog.51cto.com/andyxu/2177116

#############

centos7安装配置nmon

https://www.cnblogs.com/mingerlcm/p/7748539.html

--选择适合系统的版本:nmon安装包:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
--下载后直接解压出模板(nmon analyser v51_2.xlsm),用于最后制图 nmon_analyser工具:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser
--解压,拷贝,重命名:cp nmon_x86_64_centos7 /usr/local/bin/nmon
--授权:cd /usr/local/bin   chmod 777 nmon
--执行,查看是否安装成功:./nmon
--数据采集:./nmon_x86_64_centos7 -c 10 -s 10 -f -m .
################
-f :按标准格式输出文件名称   生成文件:<hostname>_YYYYMMDD_HHMM.nmon
-t : 输出最耗资源的进程
-s :每隔n秒采集一次,这里为30秒
-c :采集次数,这里为10,即监控=10*30/60=5分钟
-m : 指定生成文件位置
test :监控记录的标题
#####################################
--下载本地:将localhost_170616_0138.csv文件下载到本地
1) 下载后打开nmon analyser v51_2.xlsm
2) 调整excel宏的安全级别,调整为最低或者如下操作
3) 然后点击Analyser nmon data 按钮,选择下载下来的.csv文件,然后就会转化成.excel文件,生成图形化的文件,例如:

sudo /usr/local/bin/nmon -c 10 -s 6000 -f -m ~/nmon/test1/

–SUSE系统安装:根据上面找到对应版本进行安装;

SUSE查看版本号
suse:~ # lsb_release -d
Description: SUSE Linux Enterprise Server 10 (x86_64)
suse:~ # cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 3
suse:~ # uname -r
2.6.16.60-0.54.5-smp

docker 安装zabbix

#######参考文档#######

https://www.cnblogs.com/Dicky-Zhang/p/7189714.html    https://blog.rj-bai.com/post/144.html

监控出入流量:https://www.cnblogs.com/smail-bao/p/6109882.html

监控某个端口:https://blog.51cto.com/shuzonglu/2104195

tcp状态监控脚本和模板:https://www.cnblogs.com/hyzhou/p/7019464.html  https://www.cnblogs.com/dannylinux/p/8694171.html

zabbix监控redis,rocketmq;https://github.com/cuimingkun/zbx_tem_redis

常用模板:https://cloud.tencent.com/info/ce1d393f124949962a7dcde477efca39.html

1.拉取镜像:需要用到三个镜像:

mysql:数据库镜像,官方最新为mysql8

zabbix/zabbix-agent:客户端镜像

zabbix/zabbix-web-nginx-mysql:web界面镜像

zabbix/zabbix-server-mysql :server镜像

2.配置mysql:

docker run --name zabbix-mysql-server --hostname zabbix-mysql-server \
-v /junosoft/docker_data/mysql/zabbix:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="root123" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-p 13306:3306  \
-d mysql \
--character-set-server=utf8 --collation-server=utf8_bin

3.配置zabbix镜像:

docker run  --name zabbix-server-mysql --hostname zabbix-server-mysql \
--link zabbix-mysql-server:mysql \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-v /etc/localtime:/etc/localtime:ro \
-v /junosoft/docker_data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /junosoft/docker_data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
-d \
zabbix/zabbix-server-mysql

4.配置web界面:

最后安装zabbix-web-nginx
docker run --name zabbix-web-nginx-mysql1 --hostname zabbix-web-nginx-mysql \
--link zabbix-mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 18000:80 \
-p 18443:443 \
-d \
zabbix/zabbix-web-nginx-mysql

5.agent安装:

docker run --name zabbix-agent --link zabbix-server-mysql:zabbix-server -e ZBX_SERVER_HOST="zabbix-server" -p 20050:10050 -d zabbix/zabbix-agent:latest
docker run --name zabbix-agent -e ZBX_SERVER_HOST="10.101.1.41" -p 10050:10050 -d zabbix/zabbix-agent:latest

–配置nginx监控脚本:https://www.cnblogs.com/bixiaoyu/p/9169319.html

(1)nginx配置文件添加:

location /status {
stub_status on;
access_log off;
allow 192.168.2.0/24;
allow 127.0.0.1;
deny all;
}

(2)在客户端镜像中添加脚本文件:nginx_monitor.sh,并赋予执行权限:

NGINX_PORT=80  
NGINX_COMMAND=$1
nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'
       }
nginx_waiting(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'
       }
nginx_accepts(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'
       }
nginx_handled(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'
       }
nginx_requests(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $3}'
       }
  case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
      *)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
    esac

(3)zabbix_agent.conf

UserParameter=status[*],/bin/bash /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monitor.sh "$1"

(4)服务端测试:

[root@zabbix-server ~]#zabbix_get -s 192.168.2.146 -k status
USAGE:/usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monitor.sh {active|reading|writing|waiting|accepts|handled|requests}

(5)web界面添加模板:

–添加监控项:分别添加7个监控项,active|reading|writing|waiting|accepts|handled|requests

–添加完成

—图形创建:

—在主机,模板中添加

–在监控图形中即可找到:

###################报错内容###############

1.Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.

修改系统文件/etc/sysctl.conf,net.ipv4.ip_forward=1
sysctl -p生效,重新建立镜像即可;

2.MySQL报错:MySQL8.0提示 caching_sha2_passwor' cannot be loaded

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
ALTER USER 'zabbix'@'%' IDENTIFIED WITH mysql_native_password BY 'zabbix';

3.中文乱码:https://www.linuxidc.com/Linux/2017-08/146162.htm

本地C:\Windows\Fonts找一种喜欢的语言,比如我选择宋体,上传到服务器上,如果是docker镜像,可以安装apk add openssh

##############心得###########

(1)每安装完一个镜像,记得用docker logs看下,是否有问题,遇到问题日志分析;

##############客户端安装#####################

(1)如下:

在客户端上也需要下载zabbix的yum源
wget http://repo.zabbix.com/zabbix/4.1/rhel/7/x86_64/zabbix-release-4.1-1.el7.noarch.rpm
rpm -ivh zabbix-release-4.1-1.el7.noarch.rpm
yum install -y zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf //修改如下配置
Server=127.0.0.1修改为Server=192.168.133.130 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.133.130 //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=aming-123 //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
setenforce 0
systemctl start zabbix-agent
systemctl enable zabbix-agent

(2)主动模式和被动模式:

主动模式和被动模式
主动或者被动是相对客户端来讲的
被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式

nginx配置ssl证书

1.简介:

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。
  它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

<span style=”font-weight: bold;”–<-自行颁发不受浏览器信任的SSL证书

为晒晒IQ网颁发证书。ssh登陆到服务器上,终端输入以下命令,使用openssl生成RSA密钥及证书。
# 生成一个RSA密钥
$ openssl genrsa -des3 -out 33iq.key 1024
# 拷贝一个不需要输入密码的密钥文件
$ openssl rsa -in 33iq.key -out 33iq_nopass.key
# 生成一个证书请求
$ openssl req -new -key 33iq.key -out 33iq.csr
# 自己签发证书
$ openssl x509 -req -days 365 -in 33iq.csr -signkey 33iq.key -out 33iq.crt
第3个命令是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
openssl x509 -req -days 365 -in 33iq.csr -signkey 33iq.key -out 33iq.crt

2.ngx_stream_ssl_module:https://cloud.tencent.com/developer/section/1259656     https://blog.lyz810.com/article/2016/06/ngx_stream_ssl_module_doc_zh-cn/

配置模板:
stream {
 ...
 server {
 listen 12345 ssl;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
 ssl_certificate /usr/local/nginx/conf/cert.pem;
 ssl_certificate_key /usr/local/nginx/conf/cert.key;
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 10m;
 ...
 }

—ssl_certificate

语法:ssl_certificate file
默认:—
上下文:stream, server
为给定的服务器指定一个PEM格式的证书文件。如果中级证书需要指定在初级证书中,它们需要在相同的文件中按如下顺序指定:初级证书在前,然后是中级证书。PEM格式的密钥也应该放到相同文件中。
从1.11.0版本开始,该指令可以指定多次加载不同类型的证书,例如RSA和ECDSA:

—ssl_certificate_key

语法:ssl_certificate_key file
默认:—
上下文:stream, server
为给定的服务器指定一个PEM格式的密钥文件。
engine:name:id值可以代替文件指定,会从OpenSSL引擎name中加载指定id的密钥。

—ssl_ciphers

语法:ssl_ciphers ciphers
默认:ssl_ciphers HIGH:!aNULL:!MD5
上下文:stream, server
指定启用的加密算法。加密算法指定为OpenSSL库可以识别的格式,例如:
ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
完整的列表可以通过“openssl ciphers”命令查看。

—ssl_protocols

语法:ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]
默认:ssl_protocols TLSv1 TLSv1.1 TLSv1.2
上下文:stream, server
启用指定的协议。TLSv1.1和TLSv1.2参数只有OpenSSL库在1.0.1及更高版本使用时才有效。

—ssl_session_cache

语法:ssl_session_cache off | none | [builtin[:size]] [shared:name:size]
默认:ssl_session_cache none
上下文:stream, server
设置保存会话参数的缓存类型和大小。缓存可以下面任意类型:
off
使用会话缓存是强烈禁止的:nginx明确告诉客户端会话不能被重用。
none
使用会话缓存是不允许的:nginx告诉客户端会话可以重用,但实际上会话参数不会保存在缓存中。
builtin
构建在OpenSSL中的缓存,只被一个工作进程使用。缓存大小指定在会话中。如果没给出大小,它等于20480个会话,使用built-in缓存可以引起内存碎片。
shared
在工作进程之间共享的缓存。缓存大小指定为字节。1M可以保存大约4000个会话。每个共享缓存有一个唯一的名字。相同名字的缓存可以在多个服务器之间使用。
缓存和类型可以同时使用,例如:
ssl_session_cache builtin:1000 shared:SSL:10m;
但是只使用共享缓存不带built-in缓存会更有效率。

—ssl_session_timeout

语法:ssl_session_timeout time
默认:ssl_session_timeout 5m
上下文:stream, server
指定一个时间,在这个期间客户端可以重用保存在缓存中的会话参数。

2.配置nginx双向认证:https://blog.csdn.net/qq_22239675/article/details/86541088

(1)创建证书目录:mkdir /usr/local/nginx/ssl:

(2)为服务器端和客户端准备公钥、私钥:

--生成服务端私钥
openssl genrsa -out server.key 1024
--生成服务端公钥
openssl rsa -in server.key -pubout -out server.pem
--客户端私钥
openssl genrsa -out client.key 1024
--客户端公钥
openssl rsa -in client.key -pubout -out client.pem

(3)生成CA证书:

--生成 CA 私钥:
openssl genrsa -out ca.key 1024
--生成请求文件:注意,这里的 Organization Name (eg, company) [Internet Widgits Pty Ltd]: 后面生成客户端和服务器端证书的时候也需要填写,不要写成一样的!!!       Common Name (e.g. server FQDN or YOUR name) []: 这一项,是最后可以访问的域名
openssl req -new -key ca.key -out ca.csr
--生成ca证书:
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt

(4)生成服务器端证书和客户端证书:

--服务器端需要向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR 文件:
openssl req -new -key server.key -out server.csr
--向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书:
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
--生成client端csr:
openssl req -new -key client.key -out client.csr
--client 端得到 CA 签名生成client端证书:
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt

(5)如果使用jmeter进行测试,还需要对客户端证书和私钥进行转换:https://www.cnblogs.com/cuimiemie/p/6442668.html

–keytool和openssl生成的证书相互之间无法识别,keytool生成的为jsk文件,openssl默认生成的为PEM格式文件。需要先转换成pkcs12格式,然后再使用对方的命令转换成需要的格式。

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -name client -passin pass:${passwd} -passout pass:${passwd}
keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -srcstorepass ${passwd} -alias client -deststorepass ${passwd} -destkeypass ${passwd} -destkeystore ClientCert.jks

–jmeter配置:

–Protocols:客户端与服务器通过SSL加密通道连接时,可以选择单向或者双向认证(Dual)。双向认证时,您还需要指定相应的信任秘钥库(Trust Key Store), 客户端证书,以及对应的文件保护密码(Secret)。

–User authentication:如果服务器配置了用户认证,您需要提供相应的用户名和口令。

–ClientId prefix:标识客户端的固定前缀,每个连接(虚拟用户)再添加一个uuid串,整个作为客户标识。

–Keep alive(s):心跳信号发送间隔。例如,300表示客户端每隔300秒向服务器发出ping请求,以保持连接活跃。

–Connection keep time(s):连接建立后,保持该连接的时长。例如,1800表示1800秒之后连接将被关闭,即使一直发送心跳信号。

–Connect attempt max:第一次连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

–Reconnect attempt max:后继连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

3.nginx最后配置文件如下:

server {
        listen 1234 ssl so_keepalive=on ;
        proxy_connect_timeout 1s;
        proxy_timeout 3600s;
        proxy_pass iot1886;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate /usr/local/nginx/ssl/server.crt;
        ssl_certificate_key /usr/local/nginx/ssl/server.key;
        ssl_client_certificate /usr/local/nginx/ssl/ca.crt;
        ssl_verify_client on;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;
    }

4.涉及的一些名词介绍:https://www.cnblogs.com/UnGeek/p/6048334.html

TLS:传输层安全协议 Transport Layer Security的缩写
SSL:安全套接字层 Secure Socket Layer的缩写
TLS与SSL对于不是专业搞安全的开发人员来讲,可以认为是差不多的,这二者是并列关系,详细差异见 http://kb.cnblogs.com/page/197396/
KEY 通常指私钥。
CSR 是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
CRT 即 certificate的缩写,即证书。
X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。
X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式
OpenSSL 相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.

##################遇到报错:######################

(1)同样的转换命令,在服务端转换server文件时未报错,转换

[junoN1@node1 ssl]$ openssl pkcs12 -export -in client.crt -inkey client.pem -out client.p12 -name client -passin pass:${passwd} -passout pass:${passwd}
unable to load private key
139774655215504:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY

(2)jmeter:报错,查看后台terminal即可:

–Response message: Publish: Connection not found.   协议文件错误,最开始使用了key和crt文件;

–unable to load SSL private key from PEM file。           还是协议文件报错,使用的server端的文件;

####

##阿里云下载免费证书:https://blog.csdn.net/baofeidyz/article/details/80435929

1.获取免费证书:https://www.cnblogs.com/grimm/p/5938496.html https://www.linuxidc.com/Linux/2011-11/47478.htm

Alpine Linux简介

  1. 简要概括:

    Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。
    Alpine Linux 网站首页注明“Small!Simple!Secure!Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.”概括了以下特点:
1、小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
2、安全:面向安全的轻量发行版;
3、简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
4、适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。
  1. 本地安装可以查看:http://blog.csdn.net/csdn_duomaomao/article/details/76053229

  2. docker下运行:官方镜像:http://gliderlabs.viewdocs.io/docker-alpine/

docker pull alpine
docker run -it --name myalpine alpine
  1. 安装包管理:

(1)更新镜像源文件为国内库:/etc/apk/repositories,
#采用国内阿里云的源,文件内容为:
https://mirrors.aliyun.com/alpine/v3.6/main/
https://mirrors.aliyun.com/alpine/v3.6/community/
# 如果采用中国科技大学的源,文件内容为:
https://mirrors.ustc.edu.cn/alpine/v3.6/main/
https://mirrors.ustc.edu.cn/alpine/v3.6/community/
(2)alpine 提供了非常好用的apk软件包管理工具,可以方便地安装、删除、更新软件。
#查询openssh相关的软件包
apk search  openssh   
#安装一个软件包
apk add  xxx   
#删除已安装的xxx软件包
apk del  xxx   
#获取更多apk包管理的命令参数
apk --help   
#比如安装常用的网络相关工具:
#更新软件包索引文件
apk update    
#用于文本方式查看网页,用于测试http协议
apk add curl  
#提供了查看网络连接的协议端口的命令ss,可以替代netstat命令
apk add iproute2  
#drill 命令可以替代dig和nslookup DNS查询命令
apk add drill   
#测试192.168.3.166的80端口,查看web服务是否能正常访问。
curl 192.168.3.166  
#查看建立的TCP连接
ss -ta   
#查询域名的信息
drill blog.csdn.net @8.8.8.8    
#根据IP地址,反向查找域名
drill -x 8.8.8.8 @47.94.71.34   

###########参考文档########################

https://blog.csdn.net/zl1zl2zl3/article/details/80118001

https://blog.csdn.net/qq_34924407/article/details/82056717

############遇到的问题#####################

(1)WARNING: Ignoring APKINDEX.8d3fc6bf.tar.gz: No such file or directory

更新镜像文件,没有apk update

(2)ERROR: unsatisfiable constraints:

有的包会报错,证明这个源有问题

nginx查看连接数

1.主要方法:

–通过access.log进行访问:连接数

–通过status进行查看:

nginx status详解
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

–通过zabbix进行监控;

2.日志研究:

(1)https://www.zifangsky.cn/1019.html

--放于stream之内:
    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
    access_log logs/access_1234.log proxy ;
    error_log  logs/error_1234.log;
    open_log_file_cache off;
--关于open_log_file_cache:开启日志打开缓存,其他日志介绍,详见http://www.ttlsa.com/linux/the-nginx-log-configuration/
为了提高包含变量的日志文件存放路径的性能,可以使用open_log_file_cache指令来设置,格式如下:
    open_log_file_cache max=N [inactive=time][min_use=N][valid=time] |off
该指令默认是禁止的,等同于: open_log_file_cache off;
max:设置缓存中的最大文件描述数量。
inactive:设置一个时间,如果在设置的时间内没有使用此文件描述,则自动删除此描述。
min_uses:在参数inactive指定的时间范围内,如果日志文件超过使用次数,则该日志文件的描述计入缓存,默认为10秒钟
valid:设置多长时间检查一次,看日志文件路径与文件名是否仍然存在,默认60秒。
示例:open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m
--关于TCP_NODELAY,启用就意味着禁用了Nagle算法,允许小包的发送;具体原因详见:https://blog.csdn.net/lclwjl/article/details/80154565
对于关闭TCP_NODELAY,则是应用了Nagle算法。数据只有在写缓存中累积到一定量之后,才会被发送出去,这样明显提高了网络利用率(实际传输数据payload与协议头的比例大大提高)。但是这由不可避免地增加了延时;与TCP delayed ack这个特性结合,这个问题会更加显著,延时基本在40ms左右。当然这个问题只有在连续进行两次写操作的时候,才会暴露出来。

docker监控工具

参考:https://www.cnblogs.com/softidea/p/7246000.html

1.ctop安装:https://github.com/bcicen/ctop 到官网下载最新的版本;

sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.2/ctop-0.7.2-linux-amd64 -O /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop
Option
Description
-a
show active containers only
-f <string>
set an initial filter string
-h
display help dialog
-i
invert default colors
-r
reverse container sort order
-s
select initial container sort field
-scale-cpu
show cpu as % of system total
-v
output version information and exit

关于ab压测的点点

##################

kernel: nf_conntrack: falling back to vmalloc:https://blog.csdn.net/TN947/article/details/85415481

关于连接跟踪的相关介绍:https://blog.csdn.net/u010472499/article/details/78292811

单机百万:https://blog.csdn.net/lijinqi1987/article/details/74545851

基于Locust、Tsung的百万并发秒杀压测案例[转] https://www.cnblogs.com/walter-chen/p/5485383.html

###########################

问题1:默认20000连接如何修改

https://blog.51cto.com/zhizhimao/2347849?source=dra   https://blog.51cto.com/lsxme/2048003  

apr-util致命错误:expat.h:没有那个文件或目录  https://blog.csdn.net/dn1115680109/article/details/80847924

源码编译安装:分别下载Apache httpd,apr,apr-util,pcre

http://httpd.apache.org/download.cgi

http://apr.apache.org/download.cgi

http://www.pcre.org/ https://ftp.pcre.org/pub/pcre/

2.安装:

把文件上传到服务器上:
--安装组件
tra   -zxvf httpd-2.4.38.tar.gz
tar -zxvf apr-1.6.5.tar.gz
cp -r apr-1.6.5 httpd-2.4.38/srclib/apr
cd apr-1.6.5
./configure --prefix=/usr/local/apr
make && make install
tar -zxvf apr-util-1.6.1.tar.gz
cp -r apr-util-1.6.1 httpd-2.4.38/srclib/apr-util
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
tar -zxvf pcre-8.43.tar.gz
cd pcre-8.43
./configure --prefix=/usr/local/pcre --with-apr=/usr/local/apr
make && make install


--安装httpd:
cd httpd-2.4.38
./configure --with-included-apr --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-mods-shared=most
make && make install

3.遇到问题:

(1)编译apr-util报错“致命错误:expat.h:没有那个文件或目录”

问题:缺少 expat库
解决方法 :yum install -y  expat-devel

(2)httpd make报错:collect2: error: ld returned 1 exit status

执行这两条命令的目的就是为了避免这个报错;
cp -r apr-1.6.5 httpd-2.4.38/srclib/apr
cp -r apr-util-1.6.1 httpd-2.4.38/srclib/apr-util

问题2:关于999893与999894之间相差55秒的有趣现象:

 

–第二次测试:999894

相关内容:关于高负载服务器Kernel的TCP参数优化https://www.cnblogs.com/94cool/p/5631905.html

net.ipv4.tcp_mem
内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看:
  #getconf PAGESIZE
  4096
  net.ipv4.tcp_mem = 196608       262144  393216
  第一个数字表示,当 tcp 使用的 page 少于 196608 时,kernel 不对其进行任何的干预
  第二个数字表示,当 tcp 使用了超过 262144 的 pages 时,kernel 会进入 “memory pressure” 压力模式
  第三个数字表示,当 tcp 使用的 pages 超过 393216 时(相当于1.6GB内存),就会报:Out of socket memory
  以上数值适用于4GB内存机器,对于8GB内存机器,建议用以下参数:
  net.ipv4.tcp_mem = 524288     699050  1048576  (TCP连接最多约使用4GB内存)16GB*4即为4194304
net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem
为每个TCP连接分配的读、写缓冲区内存大小,单位是Byte
  net.ipv4.tcp_rmem = 4096        8192    4194304
  net.ipv4.tcp_wmem = 4096        8192    4194304
  第一个数字表示,为TCP连接分配的最小内存
  第二个数字表示,为TCP连接分配的缺省内存
  第三个数字表示,为TCP连接分配的最大内存
  一般按照缺省值分配,上面的例子就是读写均为8KB,共16KB,  4.0GB TCP内存能容纳的连接数,约为  4000MB/16KB = 250K = 25万
net.ipv4.tcp_max_orphans
最大孤儿套接字(orphan sockets)数,单位是个
net.ipv4.tcp_max_orphans = 65536
表示最多65536个
注意:当cat /proc/net/sockstat看到的orphans数量达到net.ipv4.tcp_max_orphans的约一半时,就会报:Out of socket memory
对于net.ipv4.tcp_max_orphans = 65536,当orphans达到32768个时,会报Out of socket memory,此时占用内存 32K*64KB=2048MB=2GB
  (每个孤儿socket可占用多达64KB内存),实际可能小一些

net.ipv4.tcp_orphan_retries
孤儿socket废弃前重试的次数,重负载web服务器建议调小
  net.ipv4.tcp_orphan_retries = 1
  设置较小的数值,可以有效降低orphans的数量(net.ipv4.tcp_orphan_retries = 0并不是想像中的不重试)

net.ipv4.tcp_retries2
活动TCP连接重传次数,超过次数视为掉线,放弃连接。缺省值:15,建议设为 2或者3.

net.ipv4.tcp_synack_retries
TCP三次握手的syn/ack阶段,重试次数,缺省5,设为2-3
net.ipv4.tcp_fin_timeout = 30
FIN_WAIT状态的TCP连接的超时时间
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
TIME_WAIT状态的socket快速回收,循环使用
net.ipv4.tcp_max_syn_backlog = 4096
TCP连接SYN队列大小
net.core.netdev_max_backlog = 2048
网络设备的收发包的队列大小
net.ipv4.tcp_syncookies = 1
TCP SYN Cookies,防范DDOS攻击,防止SYN队列被占满

######其他############

1.epoll实现tcp百万级高并发测试源码:https://blog.csdn.net/u014220105/article/details/84849570

–百万并发配置记录:https://blog.csdn.net/max229max/article/details/87279330

–模拟百万tcp并发:https://blog.csdn.net/u011001084/article/details/54089182

epoll_SC.rar

2.lvs替代方案:https://blog.csdn.net/fgf00/article/details/80629295

3.lvs简单调优:

四,lvs简单调优
1,调整ipvs connection hash表的大小
IPVS connection hash table size,取值范围:[12,20]。该表用于记录每个进来的连接及路由去向的信息。连接的Hash表要容纳几百万个并发连接,任何一个报文到达都需要查找连接Hash表,Hash表是系统使用最频繁的部分。Hash表的查找复杂度为O(n/m),其中n为Hash表中对象的个数,m为Hash表的桶个数。当对象在Hash表中均匀分布和Hash表的桶个数与对象个数一样多时,Hash表的查找复杂度可以接近O(1)。
连接跟踪表中,每行称为一个hash bucket(hash桶),桶的个数是一个固定的值CONFIG_IP_VS_TAB_BITS,默认为12(2的12次方,4096)。这个值可以调整,该值的大小应该在 8 到 20 之间,详细的调整方法见后面。每一行都是一个链表结构,包含N列(即N条连接记录),这个N是无限的,N的数量决定了决定了查找的速度。
LVS的调优建议将hash table的值设置为不低于并发连接数。例如,并发连接数为200,Persistent时间为200S,那么hash桶的个数应设置为尽可能接近200x200=40000,2的15次方为32768就可以了。当ip_vs_conn_tab_bits=20 时,哈希表的的大小(条目)为 pow(2,20),即 1048576,对于64位系统,IPVS占用大概16M内存,可以通过demsg看到:IPVS: Connection hash table configured (size=1048576, memory=16384Kbytes)。对于现在的服务器来说,这样的内存占用不是问题。所以直接设置为20即可。
关于最大“连接数限制”:这里的hash桶的个数,并不是LVS最大连接数限制。LVS使用哈希链表解决“哈希冲突”,当连接数大于这个值时,必然会出现哈稀冲突,会(稍微)降低性能,但是并不对在功能上对LVS造成影响。
调整 ip_vs_conn_tab_bits的方法:
新版的linux kernel中的IPVS代码,允许调整 ip_vs_conn_bits 的值。而老kernel中的的IPVS代码则需要通过重新编译内核来进行调整。
在linux kernel发行版里,IPVS通常是以模块的形式编译的。
确认能否调整使用命令 modinfo -p ip_vs(查看 ip_vs 模块的参数),看有没有 conn_tab_bits 参数可用。假如可以用,那么说时可以调整,调整方法是加载时通过设置 conn_tab_bits参数:
在/etc/modprobe.d/目录下添加文件ip_vs.conf,内容为:
options ip_vs conn_tab_bits=20
查看
ipvsadm -l
如果显示IP Virtual Server version 1.2.1 (size=4096),则前面加的参数没有生效
modprobe -r ip_vs
modprobe ip_vs
重新查看
IP Virtual Server version 1.2.1 (size=1048576)
假如没有 conn_tab_bits 参数可用,则需要重新调整编译选项,重新编译。
Centos6.2,内核版本2.6.32-220.13.1.el6.x86_64,仍然不支持这个参数,只能自定义编译了。
另外,假如IPVS支持调整 ip_vs_conn_tab_bits,而又将IPVS集成进了内核,那么只能通过重启,向内核传递参数来调整了。在引导程序的 kernel 相关的配置行上,添加:ip_vs.conn_tab_bits=20 ,然后,重启。
或者重新编译内核。
2,linux系统参数优化
关闭网卡LRO和GRO
现在大多数网卡都具有LRO/GRO功能,即 网卡收包时将同一流的小包合并成大包 (tcpdump抓包可以看到>MTU 1500bytes的数据包)交给 内核协议栈;LVS内核模块在处理>MTU的数据包时,会丢弃;
因此,如果我们用LVS来传输大文件,很容易出现丢包,传输速度慢;
解决方法,关闭LRO/GRO功能,命令:
ethtool -k eth0 查看LRO/GRO当前是否打开
ethtool -K eth0 lro off 关闭GRO
ethtool -K eth0 gro off 关闭GRO
禁用ARP,增大backlog并发数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.core.netdev_max_backlog = 500000  (在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目)
3,lvs自身配置
尽量避免sh算法
一些业务为了支持会话保持,选择SH调度算法,以实现 同一源ip的请求调度到同一台RS上;但 SH算法本省没有实现一致性hash,一旦一台RS down,,当前所有连接都会断掉;如果配置了inhibit_on_failure,那就更悲剧了,调度到该RS上的流量会一直损失;
实际线上使用时,如需 会话保持,建议配置 persistence_timeout参数,保证一段时间同一源ip的请求到同一RS上。
4,手动绑定linux系统网卡中断
lvs的并发过大,对网卡的利用很频繁,而对网卡的调优,也能增加lvs的效率。当前大多数系统网卡都是支持硬件多队列的,为了充分发挥多核的性能,需要手动将网卡中断(流量)分配到所有CPU核上去处理。默认情况下,网卡的所有的中断都是发送到一个默认的cpu上去处理的,而cpu中断需要等待时间,这样对于使用网卡频繁的服务,网卡性能就会成为瓶颈。
1,查看网卡中断:
# cat /proc/interrupts
2,绑定网卡中断到cpu
例如将中断52-59分别绑定到CPU0-7上:
[plain] view plaincopy
echo "1" > /proc/irq/52/smp_affinity  
echo "2" > /proc/irq/53/smp_affinity  
echo "4" > /proc/irq/54/smp_affinity  
echo "8" > /proc/irq/55/smp_affinity  
echo "10" > /proc/irq/56/smp_affinity  
echo "20" > /proc/irq/57/smp_affinity  
echo "40" > /proc/irq/58/smp_affinity  
echo "80" > /proc/irq/59/smp_affinity  
/proc/irq/${IRQ_NUM}/smp_affinity为中断号为IRQ_NUM的中断绑定的CPU核的情况。以十六进制表示,每一位代表一个CPU核。
        1(00000001)代表CPU0
        2(00000010)代表CPU1
        3(00000011)代表CPU0和CPU1
3,关闭系统自动中断平衡:
# service irqbalance stop
4,如果网卡硬件不支持多队列,那就采用google提供的软多队列RPS;
配置方法同硬中断绑定,例:
# echo 01 > /sys/class/net/eth0/queues/rx-0/rps_cpus
# echo  02 > /sys/class/net/eth0/queues/rx-1/rps_cpus

centos常用几款监控工具

1.iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。官方网站:http://www.ex-parrot.com/~pdw/iftop/,参考:https://www.vpser.net/manage/iftop.html

(1)安装部署:

--依赖包安装
yum install -y gcc flex byacc libpcap ncurses ncurses-devel libpcap-devel tcpdump
--下载iftop
cd /usr/local/src
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
--解压iftop
tar zxvf iftop-0.17.tar.gz
--编译安装iftop
cd iftop-0.17
./configure --prefix=/usr/local/iftop
make
make install
--赋予iftop权限
chmod 700 /usr/local/iftop/sbin/iftop
--使用
/usr/local/iftop/sbin/iftop
/usr/local/iftop/sbin/iftop -i eth0 -n 就可以看到eth0网卡的流量状况

(2)相关参数:

TX:发送流量
RX:接收流量
TOTAL:总流量
cumm:运行iftop以来的总流量
peak:峰值流量
rates:分别表示过去 2s 10s 40s时间内网卡总的平均流量
iftop常用参数摘录
-i设定监测的网卡,如:# iftop -i eth1-B 以bytes为单位显示流量(默认是bits),如:# iftop -B-n使host信息默认直接都显示IP,如:# iftop -n-N使端口信息默认直接都显示端口号,如: # iftop -N-F显示特定网段的进出流量,如# iftop -F 192.168.1.0/24或# iftop -F 192.168.1.0/255.255.255.0-h(display this message),帮助,显示参数信息-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;-b使流量图形条默认就显示;-f过滤计算包;-P使host信息及端口信息默认就都显示;-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些操作命令(注意大小写)
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按q退出监控。