Linux查看连接数,并发数

Linux查看连接数,并发数

博客分类:

linux

软连接

Bat代码  

  1. ln -s /home/ictfmcg/data/photo /var/jtnd/data/photo

tomcat 6的Connector配置如下

Xml代码  

  1. <Connector port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443"
  4. maxThreads="800" acceptCount="1000"/>

其中最后两个参数意义如下:

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

这两个值如何起作用,请看下面三种情况

情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。

情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。

情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused

maxThreads如何配置

一般的服务器操作都包括量方面:1计算(主要消耗cpu),2等待(io、数据库等)

第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。

第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这
样才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机
内存设置和linux的open file限制。

我在测试时遇到一个问题,maxThreads我设置的比较大比如3000,当服务的线程数大到一定程度时,一般是2000出头,单次请求的响应时间就会急剧的增加,

百思不得其解这是为什么,四处寻求答案无果,最后我总结的原因可能是cpu在线程切换时消耗的时间随着线程数量的增加越来越大,

cpu把大多数时间都用来在这2000多个线程直接切换上了,当然cpu就没有时间来处理我们的程序了。

以前一直简单的认为多线程=高效率。。其实多线程本身并不能提高cpu效率,线程过多反而会降低cpu效率。

当cpu核心数<线程数时,cpu就需要在多个线程直接来回切换,以保证每个线程都会获得cpu时间,即通常我们说的并发执行。

所以maxThreads的配置绝对不是越大越好。

现实应用中,我们的操作都会包含以上两种类型(计算、等待),所以maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。

最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。

acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。

如果设的较小,可以保证接受的请求较快相应,但是超出的请求可能就直接被拒绝

如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。

1、查看apache当前并发访问数:  www.2cto.com

  

Bat代码  

  1. netstat -an | grep ESTABLISHED | wc -l

  

对比httpd.conf中MaxClients的数字差距多少。

  

2、查看有多少个进程数:

  

Bat代码  

  1. ps aux|grep httpd|wc -l

  

3、可以使用如下参数查看数据

  server-status?auto

  

Bat代码  

  1. #ps -ef|grep httpd|wc -l

  1388

  统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。

  表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。

  

Bat代码  

  1. #netstat -nat|grep -i "80"|wc -l

  4341

  netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。  www.2cto.com

  最终返回的数字就是当前所有80端口的请求总数。

  

Bat代码  

  1. #netstat -na|grep ESTABLISHED|wc -l

  376

  netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。

  最终返回的数字就是当前所有80端口的已建立连接的总数。

  

Bat代码  

  1. netstat -nat||grep ESTABLISHED|wc

- 可查看所有建立连接的详细记录

  查看Apache的并发请求数及其TCP连接状态:

  Linux命令:

  

Bat代码  

  1. netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

  返回结果示例:

  LAST_ACK 5

  SYN_RECV 30

  ESTABLISHED 1597

  FIN_WAIT1 51

  FIN_WAIT2 504

  TIME_WAIT 1057

  其中的

  SYN_RECV表示正在等待处理的请求数;

  ESTABLISHED表示正常数据传输状态;

  TIME_WAIT表示处理完毕,等待超时结束的请求数。(这个参数还不太懂,为啥是等待超时结束,请大神指教)

时间: 2024-12-15 07:00:04

Linux查看连接数,并发数的相关文章

linux上apache并发数与服务器内存关系计算!

Linunx(本次为ubuntu) apache! 连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU.内存.带宽等都有关系. 查看当前的连接数可以用: ps aux | grep httpd | wc -l 或: pgrep httpd|wc -l 计算httpd占用内存的平均数: ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}' 理论上服务器内存(单位G)*1024*1024*1024/2

LINUX提高openfire并发数(网上收集)

谷歌博客地址:http://tsaiquinn.blogspot.com/2014/10/linuxopenfire.html 影响连接数的元素包含三种:1)Linux的系统参数2)进程自身可以创建的线程数3)Openfire自身系统参数 Linux系统参数1.Ulimit –n 265535  在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket

Linux netstat查看连接数,并发数

Linux查看连接数,并发数 netstat 显示协议统计和当前 TCP/IP 网络连接.NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]    -a            显示所有连接和侦听端口.//常用  -b            显示在创建每个连接或侦听端口时涉及的可执行程序.//常用                                 在某些情况下,已知可执行程序承载多个独立

Mysql数据库 查看连接数,状态 最大并发数设置

show status like '%max_connections%'; ##mysql最大连接数set global max_connections=1000 ##重新设置show variables like '%max_connections%'; ##查询数据库当前设置的最大连接数 show global status like 'Max_used_connections'; ##服务器响应的最大连接数 show status like 'Threads%'; Variable_nam

Linux下高并发socket最大连接数所受的各种限制(详解)

1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄).可使用ulimit命令查看系统允许当前用户进程打开的文件数限制: [[email protected] ~]$ ulimit -n1024 这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中

Linux下高并发socket链接数测试

一.如何增大service进程的max open files ulimit -n 只能改小max open files,不能改大.需要按照以下步骤: 修改/etc/security/limits.conf文件,将"soft nofile 655360"和"hard nofile 655360"这两行的655360改成期望的值 退出,重新ssh该机器(否则无效) 修改对service的启动脚本,增加"ulimit -n 950000",其中9500

netstat--查看服务器[有效]连接数--统计端口并发数--access.log分析

简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等. 输出信息含义 执行netstat后,其输出结果为 ? ? Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 2 210.

linux tcp 高并发最大连接数

Linux下高并发socket最大连接数所受的限制问题 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄).可使用ulimit命令查看系统允许当前用户进程打开的文件数限制: [[email protected] ~]$ ulimit -n 1024 这表示当前用户的

Linux下高并发socket最大连接数所受的各种限制

1.修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄).可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[[email protected] ~]$ ulimit -n1024这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中还得除