Linux每进程线程数问题处理
转载:http://qingzhu2640.blog.163.com/blog/static/954158312010101210161426/
公司的一台服务器升级,原先运行正常的一个服务经常会跳出,于是予以分析解决。
该服务是一个tcp的服务端程序,被动接收客户端连接处理数据,升级后当客户端连接到一定量后程序会自动跳出。
使用netstat查看各个状态的数量
netstat -na |awk ‘{print $6}’|sort |uniq -c |sort -nr
发现很多的CLOSE_WAIT,并且还在不断增加中。
觉得可能是CLOSE_WAIT得不到释放,占用很多资源,
于是修改sysctl.conf中关于tcp连接的连接时间等设置,结果问题依旧。
怀疑收到攻击,使用
netstat -na |grep CLOSE_WAIT|awk ‘{print $5}’|awk -F”:” ‘{print $1}’|sort |uniq -c |sort -nr |wc -l 查看连接过来的地址,发现都是地址来源都是正常的
首先检查
使用 ps -fe |grep programname 查看获得进程的pid
再使用 ps -Lf pid 查看对应进程下的线程数,发现数值为303,远小于实际应该的数量。于是初步判断是由于线程数不够造成的原因。查找资料发现可以通过设置 ulimit -s 来增加每进程线程数。
每进程可用线程数 = VIRT上限/stack size
其中 VIRT 上限: 32位x86 = 3G 64位x64=64G
statck size 默认是 10240 因此在默认情况下
32位系统上单进程最多可以创建300个线程,
64系统在内存充足的情况下最多可以创建 6400 个线程。
在机器硬件固定的情况下,可以通过 ulimit -s 降低stack size 的设置值来获得更多的每进程线程数。
Linux查看进程中运行线程数
ps -Tfp PID
cat /proc/${pid}/stat | awk '{print $20}'
Linux关于JVM最大线程数
http://www.iteye.com/topic/1035818
分享到:
相关推荐
linux进程的最大线程数 及最大进程数.zip
linux下的进程、线程
综上所述,Linux进程线程编程的学习笔记整理涵盖了进程的基本概念、进程的创建与管理、进程类型、进程状态转换、线程编程、进程间通信和信号处理等多个方面。掌握这些知识点对于深入理解Linux操作系统运行机制、编写...
在操作系统课程设计中,Linux进程与线程的通信是一个核心且复杂的主题。在这个项目中,学生将深入理解操作系统内核如何管理和协调不同进程和线程之间的数据交换,从而实现高效的任务执行。以下是对这个主题的详细...
在Linux操作系统中,进程和线程是两种基本的执行单元,它们在系统级和应用程序级起着至关重要的作用。理解并掌握Linux进程线程编程,是深入学习Linux系统编程的关键。下面将详细介绍这两个概念以及相关的进程间通信...
Linux 多进程多线程编程 Linux 多进程多线程编程是指在 Linux 操作系统下使用 C 语言进行多进程和多线程编程的技术。该技术可以大幅度提高程序的执行效率和响应速度,提高系统的并发能力和资源利用率。 1. 创建...
linux进程线程
在Linux和Unix操作系统中,进程和线程是两种基本的执行单元,它们是系统资源管理和任务调度的基础。本文将深入探讨这两个概念,以及它们在实际应用中的差异和交互。 一、进程 进程是操作系统中一个独立的执行实体,...
在Linux系统中,进程是程序的一次执行实例,每个进程都有自己的独立内存空间,因此它们之间的数据交换需要借助于特定的通信手段。这些手段包括管道(Pipe)、命名管道(Named Pipe)、信号量(Semaphore)、消息队列...
为了解决Linux环境下的线程不足问题,可以通过修改系统配置来增加最大进程数和最大文件描述符数。具体步骤如下: #### 修改`limits.conf` 在`/etc/security/limits.conf`文件中,可以增加或修改以下行: ``` * ...
总结来说,这个实训项目涵盖了Linux下的多线程编程、进程间同步、文件I/O以及信号处理等核心概念,是深入理解和应用操作系统原理的良好实践。通过实际编写和调试he.c代码,你将能够更好地掌握这些知识点,并提升在...
### Linux进程与线程创建详解 #### 进程与线程的概念 在深入探讨Linux下C语言编程中进程和线程的创建之前,我们先来理解一下进程与线程的基本概念。 - **进程**:是操作系统进行资源分配和调度的基本单位,每个...
在Linux操作系统中,多线程是一种程序设计技术,它允许单个进程内并行执行多个独立的线程,从而提高程序的并发性和效率。在这个"Linux下多线程模拟实验"中,我们将深入探讨如何使用C语言在Linux环境下实现生产者-...
详细介绍了linux下的程序、进程、线程的区别与共同点,是学习linux不可多得的好帮手
父进程创建三个子线程,第一个子线程对数组的前半部分进行选择排序,第二个子进程对数组的后半部分进行选择排序,第三个子线程对两个已经排序好的数组部分进行归并排序,最后当所有子线程结束之后,父进程输出排序好...
Linux下多线程及多进程及同步与互斥编程详细介绍
在 Linux2.4 内核中,消除了这个线程个数的限制,并且允许在系统运行中动态地调整进程数上限。当时采用的是 LinuxThread 线程库,它对应的线程模型是“一对一”线程模型,也就是一个用户级线程对应一个内核线程,而...
在同一个进程中,线程共享诸如全局变量、进程指令、数据、信号处理程序、信号设置、打开的文件、工作目录以及用户ID和用户组ID等资源,但每个线程拥有自己的线程ID、寄存器集合、堆栈、错误号、信号掩码和线程优先级...
在多线程环境下,每个线程都有自己的寄存器状态和栈,但它们共享进程的代码段、数据段和其他资源。 - **历史背景**:线程技术最早在20世纪60年代被提出,但直到80年代中期,随着SOLARIS等系统的出现,多线程技术才...