精华内容
下载资源
问答
  • Linux服务器 线程数和系统线程数

    千次阅读 2018-11-07 10:02:00
    1.查看服务器系统允许的最大线程数 ulimit -a 2. 修改配置文件 vi /etc/security/limits.d/90-nproc.conf 可以修改允许最大的线程数 3.查看当前系统比较好资源的线程 top -H 4.ps -ef|grep tomcat (查看tomcat...

    1.查看服务器系统允许的最大线程数
    ulimit -a
    在这里插入图片描述
    2. 修改配置文件
    vi /etc/security/limits.d/90-nproc.conf
    可以修改允许最大的线程数
    3.查看当前系统比较好资源的线程
    top -H
    在这里插入图片描述
    4.ps -ef|grep tomcat (查看tomcat进程)如tomcat pid进程号为 5750

    ps -Lf |wc -l -f 为全格式形式 wc为管道命令 word count 统计 -l 为统计行数
    在这里插入图片描述

    5.查询当前整个系统已用的线程或进程数
    pstree -p|wc -l
    在这里插入图片描述
    3,4为排查当前系统某个进程下的线程数,进而和5比较是否超出了当前系统允许的最大线程数,防止系统开辟不出新的线程,进而web应用抛出了can not create a native thread 的异常
    6.top -p pid 动态查看某个进程的资源消耗情况
    在这里插入图片描述

    展开全文
  • Linux最大线程数限制及当前线程数查询


    1、总结系统限制有:

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


    2、Java虚拟机本身限制:
        -Xms  #intial java heap size
        -Xmx  #maximum java heap size
        -Xss  #the stack size for each thread


    3、查询当前某程序的线程或进程数
    pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l

    pstree -p 3660 | wc -l


    4、查询当前整个系统已用的线程或进程数

    pstree -p | wc -l


    1、 cat /proc/${pid}/status

    2、pstree -p ${pid}

    3、top -p ${pid} 再按H   或者直接输入 top -bH -d 3 -p  ${pid}

    top -H
    手册中说:-H : Threads toggle
    加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。

    4、ps xH
    手册中说:H Show threads as if they were processes
    这样可以查看所有存在的线程。

    5、ps -mp <PID>
    手册中说:m Show threads after processes
    这样可以查看一个进程起的线程数。


    展开全文
  • 这是在公司同事那里看到的一本书,写的是linux线程服务器编程
  • linux最佳线程数

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

    最佳线程数:

    性能压测的情况下,起初随着用户数的增加,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个

     <Connector port="8009" address="${jboss.bind.address}" connectionTimeout="15000" protocol="AJP/1.3" maxThreads="200" minSpareThreads="40" maxSpareThreads="75" maxPostSize="512000" acceptCount="300" bufferSize="16384" emptySessionPath="false" enableLookups="false" redirectPort="8443" useBodyEncodingForURI="true"/>

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

    <Connector port="8009" address="${jboss.bind.address}" connectionTimeout="15000" protocol="AJP/1.3" maxThreads="20" minSpareThreads="20" maxSpareThreads="20" maxPostSize="512000" acceptCount="300" bufferSize="16384" emptySessionPath="false" enableLookups="false" redirectPort="8443" useBodyEncodingForURI="true"/>


    展开全文
  • LINUX线程网络服务器设计.pdf
  • 本书主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服 务程序的主流常规技术, 重点讲解一种适应性较强的多线程服务器的编 程模型, 即one loop per thread。
  • LINUX最大线程数及最大进程数

    万次阅读 2019-01-28 11:07:39
    查系统支持的最大线程数,一般会很大,相当于理论值 该命令在不同的机器上 值不一样。 在centos 服务器上面 : 513845 在ubuntu16.04 pc机上面 : 62667 两者机器配置 CPU 和内存 都不一样 cat /proc/sys/kernel/pid_...

    cat /proc/sys/kernel/threads-max

    查系统支持的最大线程数,一般会很大,相当于理论值

    该命令在不同的机器上 值不一样。
    在centos 服务器上面 : 513845
    在ubuntu16.04 pc机上面 : 62667

    两者机器配置 CPU 和内存 都不一样

    cat /proc/sys/kernel/pid_max

    在centos 服务器上面 :32768
    在ubuntu16.04 pc机上面 : 32768

    系统限制某用户下最多可以运行多少进程或线程
    -u 进程数目:用户最多可启动的进程数目.

    ulimit

    help ulimit

    ulimit: ulimit [-SHacdefilmnpqrstuvx] [限制]
        修改 shell 资源限制。
    
        在允许此类控制的系统上,提供对于 shell 及其创建的进程所可用的
        资源的控制。
    
        选项:
          -S        使用 `soft'(软)资源限制
          -H        使用 `hard'(硬)资源限制
          -a        所有当前限制都被报告
          -b        套接字缓存尺寸
          -c        创建的核文件的最大尺寸
          -d        一个进程的数据区的最大尺寸
          -e        最高的调度优先级(`nice')
          -f        有 shell 及其子进程可以写的最大文件尺寸
          -i        最多的可以挂起的信号数
          -l        一个进程可以锁定的最大内存尺寸
          -m        最大的内存进驻尺寸
          -n        最多的打开的文件描述符个数
          -p        管道缓冲区尺寸
          -q        POSIX 信息队列的最大字节数
          -r        实时调度的最大优先级
          -s        最大栈尺寸
          -t        最大的CPU时间,以秒为单位
          -u        最大用户进程数
          -v        虚拟内存尺寸
          -x        最大的锁数量
    
        如果提供了 LIMIT 变量,则它为指定资源的新的值;特别的 LIMIT 值为
        `soft'、`hard'和`unlimited',分别表示当前的软限制,硬限制和无限制。
        否则打印指定资源的当前限制值,不带选项则假定为 -f
    
        取值都是1024字节为单位,除了 -t 以秒为单位,-p 以512字节为单位,
        -u 以无范围的进程数量。
    
        退出状态:
        返回成功,除非使用了无效的选项或者错误发生。
    
    

    ulimit -u

    用户最多可启动的进程数目.
    4096

    ulimit -a

    用来显示当前的各种用户进程限制
    Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况

    设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:

     ulimit -u 10000 
    
     对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
    
     最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。 
    
     ulimit -n 4096 
    
      将每个进程可以打开的文件数目加大到4096,缺省为1024     
    
     其他建议设置成无限制(unlimited)的一些重要设置是: 
    
     数据段长度:ulimit -d unlimited 
    
     最大内存大小:ulimit -m unlimited 
    
     堆栈大小:ulimit -s unlimited 
    
     CPU 时间:ulimit -t unlimited 
    
     虚拟内存:ulimit -v unlimited 
    

     暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
    

    ulimit -a 参数解析

    centos:

    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 256922
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1000000
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 4096
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    
    

    ubuntu:

    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 31333
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 31333
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    
    

    阿里云:

    
    [jack@ ~]$ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 7284
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65535
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 4096
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    
    

    ulimit -n

    默认 最多打开的文件数量

    在centos 服务器上面 :1000000
    在ubuntu16.04 pc机上面 : 1024

    展开全文
  • linux服务器查看CPU物理颗数.内核数.线程数查看 公司服务器是分几批购买的,所以造成配置方面也不大相同特别是cpu配置方面,一直想弄清楚这些cpu都是什么型号,有几颗物理cpu,每颗cpu有几个核心,没个核心有几个...
  • Linux线程数和系统线程数查看

    千次阅读 2020-07-08 15:07:27
    1.查看服务器系统允许的最大线程数 ulimit -a 2. 修改配置文件 vim /etc/security/limits.d/20-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #...
  • 如何设计http服务器,及其实现过程,多线程linux,如何设计http服务器,及其实现过程,多线程linux如何设计http服务器,及其实现过程,多线程linux
  • linux线程服务器

    千次阅读 2018-05-29 15:55:58
    上一篇文章使用fork函数实现了多进程并发服务器,但是也提到了一些问题:fork是昂贵的。fork时需要复制父进程的所有资源,包括内存映象、描述字等;目前的实现使用了一种写时拷贝(copy-on-write)技术,可有效避免...
  • 究其原因是因为该用户账号下启动的应用程序占用的线程数超出限制造成的,修改用户线程数即可解决。打开相应的配置文件,如下:[root@super7 etc]# cd /etc/security/limits.d/ [root@super7 limits.d]# ls 90-npr...
  • 浅谈Linux系统线程数限制

    千次阅读 2018-08-30 12:03:26
    Linux进程与线程 概念就不提了,Richard Stevens的描述: fork is expensive. Memory is copied from the parent to the child, all descriptors are duplicated in the child, and so on. Current ...
  • Linux最大线程数及最大进程数

    万次阅读 2011-08-04 21:40:15
    查看最大线程数: cat /proc/sys/kernel/threads-max ulimit User limits - limit the use of system-wide resources. Syntax  ulimit [-ac
  • 线程网络服务器LINUX系统中一个新的服务器设计模式,有良好的性能表现,本文在分析现有LINUX 网络服务器开发模式的基础上,指出了单线程网络服务器的优点,然后给出了单线程网络服务器的设计框架,最后对其中的关键...
  • 公司服务器是分几批购买的,所以造成配置方面也不大相同特别是cpu配置方面,一直想弄清楚这些cpu都是什么型号,有几颗物理cpu,每颗cpu有几个核心,没个核心有几个线程。看起来很繁琐,下面一起彻底分分析下。大致的...
  • linux下多线程文件服务器 http://blog.csdn.net/ce123_zhouwei/article/details/17066313文章的附件
  • 摘要:单线程网络服务器linux系统中一个新的服务器设计模式,有良好的性能表现,本文在分析现有linux网络服务器开发模式的基础上,指出了单线程网络服务器的优点,然后给出了单线程网络服务器的设计框架,最后对...
  • linux线程并发服务器(TCP)

    千次阅读 2018-08-27 09:24:10
    linux线程并发服务器(TCP) ​ 所谓多线程并发服务器就是基于线程,每个客户端来了创建一个线程,由线程去处理客户端的请求。相对于多线程服务器来说,多进程服务器在创建进程时要消耗较大的系统资源,所以我们...
  • linux服务器查看进程、线程数量

    万次阅读 2019-10-23 09:07:22
    linux服务器查看进程、线程数量 查看进程总数 ps -ef | wc -l 查看某个服务的进程 eg:http服务: ps -ef | grep httpd | wc -l 查看物理cpu个 grep 'physical id' /proc/cpuinfo | sort -u 查看...
  • Muduo :用于Linux线程服务器的C 非阻塞网络库
  • LinuxC编程一站式学习.pdf unix程序员手册.pdf 多线程服务器的常用编程模型.pdf 网络编程模型综述.doc 高性能高并发服务器架构.rar Linux环境并发服务器设计技术研究.pdf 应用SELECT模型实现TCP并发服务器.pdf ...
  • 公司服务器是分几批购买的,所以造成配置方面也不大相同特别是cpu配置方面,一直想弄清楚这些cpu都是什么型号,有几颗物理cpu,每颗cpu有几个核心,没个核心有几个线程。看起来很繁琐,下面一起彻底分分析下。 大致...
  • 在做即时通讯服务的时候,经常关注的是提供长连接服务的机器的连接,用来判断系统有多少设备在线,但一般很少去关注一台Linux服务器的一个端口到底可以建立多少连接。 而在日常的多线程编程开发中,我们关注最多的...
  • 资源内容是Linux线程服务端编程 - 陈硕(高清完整版),带标签。已经用软件分析成“分子版”。
  • Linux线程服务器-门禁打卡系统

    千次阅读 2015-09-09 10:52:39
    系统采用一个服务器+两种客户端(网页+APP)OpenDoorMultiThreadServerOpenDoorMultiThreadServer 实验室门禁打卡系统 1、mydb是操作数据库Mysql类,表示每个人员身份的唯一标准是提前分配的不同的局域网IP 2、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,273
精华内容 88,509
关键字:

linux服务器线程数

linux 订阅