精华内容
下载资源
问答
  • 统计进程到mysql的连接数

    千次阅读 2017-02-14 17:42:34
    -p表示显示连接所属的进程名和进程id p Show the PID (process identifier) and name of the program to which each socket belongs. -n表示数字化的,不要显示可读的名称,端口该是多少就是显示多少,如果不加...

    1、 netstat是有权限的限制的,如果不是使用root用户执行,很可能无法看到全部的结果,如下

     netstat -tnp | grep 3306
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
     ...

    2、 netstat -tnp

    mysql使用tcp连接
    t表示tcp
    -p表示显示连接所属的进程名和进程id
    p Show the PID (process identifier) and name of the program to which each socket belongs.
    -n表示数字化的,不要显示可读的名称,端口该是多少就是显示多少,如果不加会转义下,比如3306端口会显示mysql
    Show numerical addresses instead of trying to determine symbolic host, port or user names.

    netstat -tnp | grep Pid | grep 3306 | wc -l

    统计Pid到mysql的tcp连接数量

    展开全文
  • 实时查看tomcat进程连接数

    千次阅读 2019-07-25 11:57:48
    watch -d -n 1 ‘netstat -antp | grep 8080 | grep ESTABLISHED -c’ #每1秒刷新连接数,注意单引号内的是需要定时执行的命令 #结合tomcat最大连接数和数据库连接池最大连接数分析服务器的性能情况 ...

     

    watch -d -n 1 ‘netstat -antp | grep 8080 | grep ESTABLISHED -c’
    #每1秒刷新连接数,注意单引号内的是需要定时执行的命令
    #结合tomcat最大连接数和数据库连接池最大连接数分析服务器的性能情况

     

    展开全文
  • 最大进程线程数 连接数

    千次阅读 2018-10-07 18:03:02
    ======================== ========================================================= ==============================================...吞吐量(TPS)、QPS、并发、响应时间(RT)概念 开发的原因,需要对...

    ========================

    =========================================================

    ===========================================================================

    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念

    开发的原因,需要对吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念做下了解,查自百度百科,记录如下:
    1. 响应时间(RT) 
      响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。 
      对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。对于一个游戏软件来说,响应时间小于100毫秒应该是不错的,响应时间在1秒左右可能属于勉强可以接受,如果响应时间达到3秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。 

    2. 吞吐量(Throughput) 
         吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。 
      对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。这是因为处理每个请求需要用到很多资源,由于每个请求的处理过程中有许多不走难以并发执行,这导致在具体的一个时间点,所占资源往往并不多。也就是说在处理单个请求时,在每个时间点都可能有许多资源被闲置,当处理多个请求时,如果资源配置合理,每个用户看到的平均响应时间并不随用户数的增加而线性增加。实际上,不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。 

    3. 并发用户数 
      并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。 
    4. QPS每秒查询率(Query Per Second) 
      每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 (看来是类似于TPS,只是应用于特定场景的吞吐量

    =========================================

    ===========================================================

    =============================================================================

    tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

     Brise 关注

    2015.08.14 15:58* 字数 1403 阅读 3672评论 0喜欢 4

    最佳线程数总结(1)

    多线程JBoss应用服务器WebTomcat

    最佳线程数:

    性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值我们认为是最佳线程数。

    为什么要找最佳线程数

    1.过多的线程只会造成,更多的内存开销,更多的CPU开销,但是对提升QPS确毫无帮助

    2.找到最佳线程数后通过简单的设置,可以让web系统更加稳定,得到最高,最稳定的QPS输出

    最佳线程数的获取:

    1、通过用户慢慢递增来进行性能压测,观察QPS,响应时间

    2、根据公式计算:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量

    3、单用户压测,查看CPU的消耗,然后直接乘以百分比,再进行压测,一般这个值的附近应该就是最佳线程数量。

    影响最佳线程数的主要因素:

    1、IO

    2、CPU

    根据公式:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量

    一般来说是IO和CPU。IO开销较多的应用其CPU线程等待时间会比较长,所以线程数量可以开的多一些,相反则线程数量要少一些,其实有两种极端,纯IO的应用,比如proxy,则线程数量可以开到非常大(实在太大了则需要考虑线程切换的开销),这种应用基本上后端(比如这个proxy是代理搜索的)的QPS能有多少,proxy就有多少。

    另一种是耗CPU的计算,这种情况一般来讲只能开到CPU个数的线程数量。但是并不是说这种应用的QPS就不高,往往这种应用的QPS可以很高。

    QPS和线程数的关系

    1、在最佳线程数量之前,QPS和线程是互相递增的关系,线程数量到了最佳线程之后,QPS持平,不在上升,甚至略有下降,同时相应时间持续上升。

    2、同一个系统而言,支持的线程数越多(最佳线程数越多而不是配置的线程数越多),QPS越高

    QPS和响应时间的关系

    1、对于一般的web系统,响应时间一般有CPU执行时间+IO等待时间组成

    2、CPU的执行时间减少,对QPS有实质的提升,IO时间的减少,对QPS提升不明显。如果要想明显提升QPS,优化系统的时候要着重优化CPU消耗大户。

    最佳线程数和jvm堆内存得关系:

    以上都是依据性能瓶颈在CPU的情况,对于java应用还有一个因素是FULL GC,我们要保证在最佳线程数量下,不会发生频繁FULL GC

    根据公式::(小GC时间间隔/rt)*(并发线程数量 * thm) <=young 计算得到的并发线程数量如果<最佳线程数量 则可能导致FULL GC较频繁,实际情况看来这种情况在web系统上非常少。不过可以模拟出来。

    所以我们在设置jboss线程的时候,可以利用内存公式计算出来的线程数量来设置,通过压测和计算得到最佳线程数,然后设置线程数。

    设置线程数量:

    压测最佳线程数<真实设置的线程数量<内存极限线程数

    比如,通过压测得到某系统的最佳线程数量是10,然后通过内存计算的线程数量是20,则,设置jboss的线程数量为15是可行的,如果直接设置了10,由于系统本身会受到一些依赖系统的变化而产生一些变化,比如系统依赖一些IO的响应时间会突然延长,由于线程数量还是10,其实这个时候最佳线程数量已经变成了13了,由于我们设置死了10,其结果就是导致qps下降,但是如果超过20,则又会引起FULL gc非常频繁,反过来影响QPS的下降。

    jboss的线程数设置:

    对于jboss而言,设置线程数量要看使用了那种线程连接,如http、ajp等

    http和ajp的设置是完全一样的,非常简单:

    以ajp为例,找到server.xml或者tomcat-server.xml:

    默认线程数量是200个

    maxThreads="200"minSpareThreads="40" maxSpareThreads="75" maxPostSize="512000" acceptCount="300" bufferSize="16384" emptySessionPath="false" enableLookups="false" redirectPort="8443" useBodyEncodingForURI="true"/>

    这里将默认的线程数量改成了20,当然相应的其他最小空闲线程数和最大空闲线程数也做一下调整:

    maxThreads="20"minSpareThreads="20" maxSpareThreads="20" maxPostSize="512000" acceptCount="300" bufferSize="16384" emptySessionPath="false" enableLookups="false" redirectPort="8443" useBodyEncodingForURI="true"/>

     

     

    ============================================

    =============================================================

    ==========================================================================

    JVM最大线程数

     

    JVM最大创建线程数量由JVM堆内存大小、线程的Stack内存大小、系统最大可创建线程数(Java线程的实现是基于底层系统的线程机制来实现的,Windows下_beginthreadex,Linux下pthread_create)三个方面影响。具体如下:

    -Xms  最小堆内存
    -Xmx  最大堆内存
    -Xss   设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M
    操作系统限制 系统最大可开线程数,主要受以下几个参数影响

            /proc/sys/kernel/pid_max

            /proc/sys/kernel/thread-max

            max_user_process(ulimit -u) 在64位Linux系统(CentOS 6, 3G内存)下测试,发现还有一个参数是会限制线程数量:max user process(可通过ulimit –a查看,默认值1024,通过ulimit –u可以修改此值),这个值在上面的32位Ubuntu测试环境下并无限制

            /proc/sys/vm/max_map_count

    将threads-max,pid_max,max user process,这三个参数值都修改成100000,-Xms,-Xmx尽量小(128m,64m),-Xss尽量小(64位下最小104k,可取值128k)。事先预测在这样的测试环境下,线程数量就只会受限于测试环境的内存大小(3G),可是实际的测试结果是线程数量在达到32K(32768,创建的数量最多的时候大概是33000左右)左右时JVM是抛出警告:Attempt to allocate stack guard pages failed,然后出现OutOfMemoryError无法创建本地线程。查看内存后发现还有很多空闲,所以应该不是内存容量的原因。/proc/sys/vm/max_map_count的数量翻倍,从65536变为131072,创建的线程总数量达到65000+,电脑基本要卡死(3G内存)…

    简单查了下这个参数的作用,在[8]中的描述如下:

    “This file contains the maximum number of memory map areas a process may have. Memory map areas are used as a side-effect of calling malloc, directly by mmap and mprotect, and also when loading shared libraries.

    While most applications need less than a thousand maps, certain programs, particularly malloc debuggers, may consume lots of them, e.g., up to one or two maps per allocation.

    The default value is 65536.”

     

    操作系统最大线程数限制

    32位Linux系统可创建的最大pid数是32678,这个数值可以通过/proc/sys/kernel/pid_max来做修改(修改其值为10000:echo 10000 > /proc/sys/kernel/pid_max),但是在32系统下这个值只能改小,无法改大。

    Windows可创建的线程数量比linux可能更少。

    在64位Linux系统(CentOS 6)下,还有一个参数会限制线程数量:max user process(可通过ulimit –a查看,默认值1024,通过ulimit –u可以修改此值)

    测试程序如下:

    1. import java.util.concurrent.atomic.AtomicInteger; 
    2. public class TestThread extends Thread { 
    3.     private static final AtomicInteger count = new AtomicInteger(); 
    4.     public static void main(String[] args) { 
    5.         while (true) 
    6.             (new TestThread()).start(); 
    7.     } 
    8.     @Override 
    9.     public void run() { 
    10.         System.out.println(count.incrementAndGet()); 
    11.         while (true) 
    12.             try { 
    13.                 Thread.sleep(Integer.MAX_VALUE); 
    14.             } catch (InterruptedException e) { 
    15.                 break; 
    16.             } 
    17.     } 

    测试环境:

    系统:Ubuntu 10.04 Linux Kernel 2.6 (32位)

    内存:2G

    JDK:1.7

    测试结果:

    ◆ 不考虑系统限制

    -Xms

    -Xmx

    -Xss

    结果

    1024m

    1024m

    1024k

    1737

    1024m

    1024m

    64k

    26077

    512m

    512m

    64k

    31842

    256m

    256m

    64k

    31842

    在创建的线程数量达到31842个时,系统中无法创建任何线程。

    由上面的测试结果可以看出增大堆内存(-Xms,-Xmx)会减少可创建的线程数量,增大线程栈内存(-Xss,32位系统中此参数值最小为60K)也会减少可创建的线程数量。

    ◆ 结合系统限制

    线程数量31842的限制是是由系统可以生成的最大线程数量决定的:/proc/sys/kernel/threads-max,可其默认值是32080。修改其值为10000:echo 10000 > /proc/sys/kernel/threads-max,修改后的测试结果如下:

    -Xms

    -Xmx

    -Xss

    结果

    256m

    256m

    64k

    9761

    这样的话,是不是意味着可以配置尽量多的线程?再做修改:echo 1000000 > /proc/sys/kernel/threads-max,修改后的测试结果如下:

    -Xms

    -Xmx

    -Xss

    结果

    256m

    256m

    64k

    32279

    128m

    128m

    64k

    32279

    发现线程数量在达到32279以后,不再增长。查了一下,32位Linux系统可创建的最大pid数是32678,这个数值可以通过/proc/sys/kernel/pid_max来做修改(修改方法同threads-max),但是在32系统下这个值只能改小,无法更大。在threads-max一定的情况下,修改pid_max对应的测试结果如下:

    pid_max

    -Xms

    -Xmx

    -Xss

    结果

    1000

    128m

    128m

    64k

    582

    10000

    128m

    128m

    64k

    9507

    在Windows上的情况应该类似,不过相比Linux,Windows上可创建的线程数量可能更少。基于线程模型的服务器总要受限于这个线程数量的限制。

     

    总结:

    JVM中可以生成的最大数量由JVM的堆内存大小、Thread的Stack内存大小、系统最大可创建的线程数量(Java线程的实现是基于底层系统的线程机制来实现的,Windows下_beginthreadex,Linux下pthread_create)三个方面影响。具体数量可以根据Java进程可以访问的最大内存(32位系统上一般2G)、堆内存、Thread的Stack内存来估算。

    一、模拟问题:

    首先我们通过下面这个测试程序 来认识这个问题:
    运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,
    测试程序:

    Java代码 

     收藏代码

    1. import java.util.concurrent.CountDownLatch;  
    2.   
    3. public class TestNativeOutOfMemoryError {  
    4.   
    5.     public static void main(String[] args) {  
    6.   
    7.         for (int i = 0;; i++) {  
    8.             System.out.println("i = " + i);  
    9.             new Thread(new HoldThread()).start();  
    10.         }  
    11.     }  
    12.   
    13. }  
    14.   
    15. class HoldThread extends Thread {  
    16.     CountDownLatch cdl = new CountDownLatch(1);  
    17.   
    18.     public HoldThread() {  
    19.         this.setDaemon(true);  
    20.     }  
    21.   
    22.     public void run() {  
    23.         try {  
    24.             cdl.await();  
    25.         } catch (InterruptedException e) {  
    26.         }  
    27.     }  
    28. }  

    不指定任何JVM参数,eclipse中直接运行输出,看到了这位朋友了吧:
    i = 5602 
    Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:597)
        at TestNativeOutOfMemoryError.main(TestNativeOutOfMemoryError.java:20)

     

    二、分析问题:

    这个异常问题本质原因是我们创建了太多的线程,而能创建的线程数是有限制的,导致了异常的发生。能创建的线程数的具体计算公式如下: 
    (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
    MaxProcessMemory 指的是一个进程的最大内存
    JVMMemory         JVM内存
    ReservedOsMemory  保留的操作系统内存
    ThreadStackSize      线程栈的大小

    在java语言里, 当你创建一个线程的时候,虚拟机会在JVM内存创建一个Thread对象同时创建一个操作系统线程,而这个系统线程的内存用的不是JVMMemory,而是系统中剩下的内存(MaxProcessMemory - JVMMemory - ReservedOsMemory)。 


    结合上面例子我们来对公式说明一下: 
    MaxProcessMemory 在32位的 windows下是 2G
    JVMMemory   eclipse默认启动的程序内存是64M
    ReservedOsMemory  一般是130M左右
    ThreadStackSize 32位 JDK 1.6默认的stacksize 325K左右
    公式如下:
    (2*1024*1024-64*1024-130*1024)/325 = 5841 
    公式计算所得5841,和实践5602基本一致(有偏差是因为ReservedOsMemory不能很精确) 

    由公式得出结论:你给JVM内存越多,那么你能创建的线程越少,越容易发生java.lang.OutOfMemoryError: unable to create new native thread。 

    咦,有点背我们的常理,恩,让我们来验证一下,依旧使用上面的测试程序,加上下面的JVM参数,测试结果如下: 
    ThreadStackSize      JVMMemory                    能创建的线程数
    默认的325K             -Xms1024m -Xmx1024m    i = 2655
    默认的325K               -Xms1224m -Xmx1224m    i = 2072
    默认的325K             -Xms1324m -Xmx1324m    i = 1753
    默认的325K             -Xms1424m -Xmx1424m    i = 1435
    -Xss1024k             -Xms1424m -Xmx1424m    i = 452 
    完全和公式一致。 

    三、解决问题: 
    1, 如果程序中有bug,导致创建大量不需要的线程或者线程没有及时回收,那么必须解决这个bug,修改参数是不能解决问题的。
    2, 如果程序确实需要大量的线程,现有的设置不能达到要求,那么可以通过修改MaxProcessMemory,JVMMemory,ThreadStackSize这三个因素,来增加能创建的线程数:
    a, MaxProcessMemory 使用64位操作系统
    b, JVMMemory   减少JVMMemory的分配
    c, ThreadStackSize  减小单个线程的栈大小

    参考资料:

    1. http://blog.krecan.net/2010/04/07/how-many-threads-a-jvm-can-handle/

    2. http://www.cyberciti.biz/tips/maximum-number-of-processes-linux-26-kernel-can-handle.html

    3. http://geekomatic.ch/2010/11/24/1290630420000.html

    4. http://stackoverflow.com/questions/763579/how-many-threads-can-a-java-vm-support

    5. http://www.iteye.com/topic/1035818

    6. http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html

    7. https://listman.redhat.com/archives/phil-list/2003-August/msg00025.html

    8. http://www.linuxinsight.com/proc_sys_vm_max_map_count.html

    http://jzhihui.iteye.com/blog/1271122

    http://sesame.iteye.com/blog/622670

    小小菜鸟一枚

     

    ======================================

    ==================================================

    =================================================================

    =============================================================================

    关于linux系统最大进程数和单进程最大线程数的测试

    2017年03月02日 22:08:17 逐鹿之城 阅读数:8014 标签: 进程数线程数 更多

    个人分类: //【IPC与网络部分】

    版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/derkampf/article/details/59674993

    我的系统:RedHat企业7 64位 内存6G 
    ulimit -a查看用于shell启动进程所占用的资源默认设置 
    这里写图片描述 
    一.最大进程数 
    1.使用命令ulimit -u查看软限制,我的为7807 
    /etc/security/limits.conf查看硬限制,内核参数kernel.pid_max也做了限制 
    2.系统用pid_t表示进程号,那么最大的进程数当然也不能超过pid_t的类型 
    查看最大进程数

    cat /proc/sys/kernel/pid_max#查系统支持的最大进程数,一般会很大,相当于理论值
    • 1

    这里写图片描述 
    3.创建一个新进程会消耗系统资源(主要是内存),经测试,在创建6000多个进程时,程序运行的很缓慢,通过vmstat命令看到,swap内存置入置出频繁,可以判断是由于内存不足,使用虚拟内存,所创建过多进程时,系统内存必须要加以衡量。

    代码验证:

    #include<iostream>
    #include<unistd.h>
    #include<stdio.h>
    using namespace std;
    
    int main()
    {
        pid_t pid;
        int i=0;
        while(1)
        {
            pid = fork();
            if(pid == 0)
                break;
            else if(pid == -1)
            {
                perror("create error");
                break;
            }
            cout<<i++<<" process"<<endl;
        }
    }

    这里写图片描述

    可以即使是系统的默认配置文件,对最大进程数还是有所限制的,我的机器最多创建了32012个进程。这也就是为什么用ps aux命令监控系统资源时,进程的pid达到了近30000. 
    二.最大线程数 
    /usr/include/bits/local_lim.h#define PTHREAD_THREADS_MAX 1024,可见最大线程数限制为1024,而NPTL( Native POSIX Thread Library)中则没有硬性的限制,仅受限于系统资源(主要是线程的stack所占用的内存,可用命令ulimits -s查看,一般是8192KB(8M))。

    cat /proc/sys/kernel/threads-max #查系统支持的最大线程数,一般会很大,相当于理论值

    这里写图片描述 
    代码试验:

    #include<stdio.h>
    #include<unistd.h>
    #include<pthread.h>
    
    void* foo(void*)
    {}
    int main()
    {
        pthread_t thread;
        int i = 0;
        while(1)
        {
            if(pthread_create(&thread, NULL, foo, NULL) != 0)
                return -1;
            printf("%d\n", i);
            i++;
        }
        return 0;
    }

    这里写图片描述 
    最终结果为32747个,远远小于理论值90829 
    Linux上,最大线程数目是: 
    number of threads = total virtual memory / (stack size*1024*1024),由于我机子的virtual memory为unlimited,,当然。在32位系统上,进程空间是4G,其中0-3G是用户空间(0x0-0xBFFFFFFF), 3G-4G是内核空间。 
    因此理论上讲,用户空间大小/栈大小=最大线程数。3072M/8M=384,考虑到系统的占用,主线程(管理线程)等,应该是在380左右. 也许在你的系统上是382. 
    我们可以减小栈限制或者增大虚拟内存使得线程的数目增加。 
    这里写图片描述

    检查虚拟内存: ulimit -v
    检查栈大小:  ulimit -s
    设置虚拟内存: ulimit -v 新值
    设置栈大小: ulimit -s 新值
    或者pthread_create用pthread_attr_getstacksize设置一个较小的栈大小

    总结系统限制有: 
    /proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值 
    /proc/sys/kernel/thread-max 
    max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程 
    /proc/sys/vm/max_map_count硬件内存大小(我的为65530) 
    这里写图片描述

    补充

    1.查询当前某程序的线程或进程数 
    pstree -p ps -e | grep java | awk '{print $1}' | wc -l 
    上面用的是命令替换,关于命令替换,就是说用“括起来的命令会优先执行,然后以其输出作为其他命令的参数 
    或 
    pstree -p 进程号 | wc -l 
    top -H 进程号 | wc -l 
    上面用的是管道,关于管道:管道符号”|”左边命令的输出作为右边命令的输入 
    2.查询当前整个系统已用的线程或进程数 
    pstree -p | wc -

    展开全文
  • linux netstat 统计查看外部连接数

    千次阅读 2017-05-15 16:36:40
    1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3)、统计已连接上的,状态为“established netstat -na|grep ESTABLISHED|wc -l 4)、查出哪个IP地址连接...
    服务器上的一些统计数据:
    

    1)统计80端口连接数
    netstat -nat|grep -i "80"|wc -l

    2)统计httpd协议连接数
    ps -ef|grep httpd|wc -l

    3)、统计已连接上的,状态为“established
    netstat -na|grep ESTABLISHED|wc -l

    4)、查出哪个IP地址连接最多,将其封了.
    netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

    netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

    ---------------------------------------------------------------------------------------------

    1、查看apache当前并发访问数:
    netstat -an | grep ESTABLISHED | wc -l

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

    2、查看有多少个进程数:
    ps aux|grep httpd|wc -l

    3、可以使用如下参数查看数据
    server-status?auto

    #ps -ef|grep httpd|wc -l
    1388
    统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。
    表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。

    #netstat -nat|grep -i "80"|wc -l
    4341
    netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。
    最终返回的数字就是当前所有80端口的请求总数。

    #netstat -na|grep ESTABLISHED|wc -l
    376
    netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。
    最终返回的数字就是当前所有80端口的已建立连接的总数。

    netstat -nat||grep ESTABLISHED|wc - 可查看所有建立连接的详细记录

    查看Apache的并发请求数及其TCP连接状态:
      Linux命令:
    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表示处理完毕,等待超时结束的请求数。

    ---------------------------------------------------------------------------------------------

    查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
    Linux命令:
             ps -ef | grep httpd | wc -l

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

    Linux命令:
             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表示处理完毕,等待超时结束的请求数。



    1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:

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

    netstat -n|grep  ^tcp|awk '{print $NF}'|sort -nr|uniq -c
     
    或者:
    netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
    返回结果一般如下:
     
    LAST_ACK 5 
    SYN_RECV 30
    ESTABLISHED 1597
    FIN_WAIT1 51
    FIN_WAIT2 504
    TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)
     
    其他参数说明:
     
    CLOSED:无连接是活动的或正在进行
    LISTEN:服务器在等待进入呼叫
    SYN_RECV:一个连接请求已经到达,等待确认
    SYN_SENT:应用已经开始,打开一个连接
    ESTABLISHED:正常数据传输状态
    FIN_WAIT1:应用说它已经完成
    FIN_WAIT2:另一边已同意释放
    ITMED_WAIT:等待所有分组死掉
    CLOSING:两边同时尝试关闭
    TIME_WAIT:另一边已初始化一个释放
    LAST_ACK:等待所有分组死掉
     
    2、查看Nginx运行进程数
    ps -ef | grep nginx | wc -l
    返回的数字就是nginx的运行进程数,如果是apache则执行
    ps -ef | grep httpd | wc -l
     
    3、查看Web服务器进程连接数:
    netstat -antp | grep 80 | grep ESTABLISHED -c
     
    4、查看MySQL进程连接数:
    ps -axef | grep mysqld -c


    展开全文
  • linux netstat 统计连接数查看

    千次阅读 2018-07-23 12:46:40
    1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3)、统计已连接上的,状态为“established netstat -na|grep ESTABLISHED|wc -l 4)、查出哪个I...
  • IIS:连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数详解 iis性能指标的各种概念:连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大...
  • 查看mysql数据库连接数 查看最大连接数 show variables like 'max_connections'; 查看已使用连接数 show status like 'max%connections'; 发现已使用的已经大于最大连接数。 更改最大连接数 全局set(临时) 这种...
  • linux netstat 统计连接数查看外部

    千次阅读 2016-07-02 22:31:25
    1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3)、统计已连接上的,状态为“established netstat -na|grep ESTABLISHED|wc -l 4)、查出哪个IP...
  • linux netstat 统计连接数查看外部IP

    千次阅读 2019-03-06 11:17:10
    1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3)、统计已连接上的,状态为“established netstat -na|grep ESTABLISHED|wc -l 4)、查出...
  • 流量统计-如何统计个进程的流量

    千次阅读 2012-07-26 12:58:34
    2.2之后引入了一个新的 android.net.TrafficStats类可以做到网络流量统计,可以统计总流量也可以统计单个进程的流量。 对于Android流量统计来说在2.2版中加入了TrafficStats类可以轻松获取,其实本身TrafficStats...
  • linux netstat 统计连接数查看外部I

    千次阅读 2011-06-15 14:40:00
    服务器上的一些统计数据:1)统计80端口连接数netstat -nat|grep -i "80"|wc -l2)统计httpd协议连接数ps -ef|grep httpd|wc -l3)、统计已连接上的,状态为“establishednetstat -na|grep ESTABLISHED|wc -l4)、查出...
  • windows命令行netstat 统计连接数

    万次阅读 2017-03-18 11:16:10
    netstat -an|find "ESTABLISHED" /c 转自:http://blog.sina.com.cn/s/blog_6441e0640102vaeg.html 
  • 转自: http://bbs.csdn.net/topics/110183082 ls /proc/<进程pid>/fd -l | grep socket: | wc -l
  • CentOS7统计某个进程当前的线程

    千次阅读 2018-08-07 13:34:00
    方式: cat /proc/[pid]/status 展示结果中,Threads后边对应的数字就是进程拥有的线程数量   方式二: ps hH p 3805|wc -l  
  • linux netstat 统计连接数查看外部(ZT)

    万次阅读 2011-06-29 22:26:00
    服务器上的一些统计数据:1)统计80端口连接数netstat -nat|grep -i "80"|wc -l2)统计httpd协议连接数ps -ef|grep httpd|wc -l3)、统计已连接上的,状态为“establishednetstat -na|grep ESTABLISHED|wc -l4)、查出...
  • 可以简单方便统计进程或程序占用的系统的资源,包括cpu的使用率,硬盘的使用,内存的使用,打开的本地连接数,调用各硬件接口的统计使用
  • (1) 控制 Nginx 单个进程允许的最大连接数的参数为 worker_connections ,这参数要根据服务器性能和内存使用量来调整 (2) 进程的最大连接数受 Linux 系统进程的最大打开文件数限制,只有执行了 “ulimit -HSn ...
  • 统计连接数状态: Linux网络连接状态检查! 检查linux的网络连接状态其实很简单,利用Linux内置的一些命令和SHELL的几小技巧就可以完成看似复杂的检查任务,这也是Linux的魅力之!最基本的,netstat -atn该命令...
  • 新blog地址:http://hengyunabc.github.io/netstat-difference-proc-fd-socket-stat/最近,线上一个应用,发现socket缓慢增长,并且不回收,超过警告线之后,被运维监控自动重启了。首先到zabbix上观察JVM历史记录...
  • 查看linux中的TCP连接数

    千次阅读 2018-05-22 11:44:45
    、查看哪些IP连接本机netstat -an二、查看TCP连接数1)统计80端口连接数netstat -nat|grep -i "80"|wc -l2)统计httpd协议连接数ps -ef|grep httpd|wc -l3)、统计已连接上的,状态为...
  • postgresql数据库连接数和状态查询

    万次阅读 2018-02-07 14:18:32
    查看数据库的当前连接数和状态的几...统计当前postgresql相关进程数,在大体上可以估算数据库的连接数,非精准,但是目前最常用的 ps -ef |grep postgres |wc -l 包含本窗口的所有数据库连接数 SELECT count(*)
  • Linux 监控tcp连接数及状态

    千次阅读 2019-01-10 16:18:26
    二、查看TCP连接数 查看tcp连接数状态    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  统计8080端口上有多少TCP连接,命令:    netstat -ant |grep 80|wc -l  TCP...
  • 做了一些实验,UDP连接数的概念...360获取的UDP连接数,无非就是通过调用GetExtendedUdpTable获取,而MSDN对这API的解释根本没有出现连接数字眼。MSDN只是说这API会获取所有已绑定地址的UDP套接字。还有360忽略对s
  • IIS连接数是什么?一般IIS连接数有多少IIS或WEB连接数是指在同一时间内服务器可以接受的访问数,可以简单的理解为在同一时间内允许打开多少个浏览器窗口访问你的网站。 一般地,一个IE浏览器产生2个IIS连接。在一...
  • tomcat调优之监控连接数和连接池

    千次阅读 2019-01-04 18:23:40
    在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 Tomcat配置文件server.xml中:Connector的主要功能,是接收连接请求,创建Request和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,268
精华内容 52,507
关键字:

统计一个进程的连接数