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系统中,进程是资源分配的基本单位,每个进程都有一个唯一的进程ID(PID)。进程具有独立的地址空间,能够执行一段程序,并拥有自己的系统资源,如内存、文件描述符等。进程间可以通过进程间通信(IPC)机制...
linux下的进程、线程
综上所述,Linux进程线程编程的学习笔记整理涵盖了进程的基本概念、进程的创建与管理、进程类型、进程状态转换、线程编程、进程间通信和信号处理等多个方面。掌握这些知识点对于深入理解Linux操作系统运行机制、编写...
在Linux操作系统中,进程和线程是两个核心概念,它们是程序执行的载体。本教程“linux 进程线程小程序”将深入探讨这两个概念,以及如何利用信号量、管道和共享内存进行进程间的通信。 首先,让我们了解什么是进程...
在操作系统课程设计中,Linux进程与线程的通信是一个核心且复杂的主题。在这个项目中,学生将深入理解操作系统内核如何管理和协调不同进程和线程之间的数据交换,从而实现高效的任务执行。以下是对这个主题的详细...
在Linux操作系统中,进程和线程是两种基本的执行单元,它们在系统级和应用程序级起着至关重要的作用。理解并掌握Linux进程线程编程,是深入学习Linux系统编程的关键。下面将详细介绍这两个概念以及相关的进程间通信...
Linux 多进程多线程编程 Linux 多进程多线程编程是指在 Linux 操作系统下使用 C 语言进行多进程和多线程编程的技术。该技术可以大幅度提高程序的执行效率和响应速度,提高系统的并发能力和资源利用率。 1. 创建...
在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)和多线程编程是实现高效并发处理的关键技术。本文将深入探讨这两种技术,并结合"全双工邮箱通讯"的源码实例,来阐述如何利用它们实现数据交换。 ...
linux进程线程
在Linux和Unix操作系统中,进程和线程是两种基本的执行单元,它们是系统资源管理和任务调度的基础。本文将深入探讨这两个概念,以及它们在实际应用中的差异和交互。 一、进程 进程是操作系统中一个独立的执行实体,...
在Linux系统中,进程是程序的一次执行实例,每个进程都有自己的独立内存空间,因此它们之间的数据交换需要借助于特定的通信手段。这些手段包括管道(Pipe)、命名管道(Named Pipe)、信号量(Semaphore)、消息队列...
总结来说,这个实训项目涵盖了Linux下的多线程编程、进程间同步、文件I/O以及信号处理等核心概念,是深入理解和应用操作系统原理的良好实践。通过实际编写和调试he.c代码,你将能够更好地掌握这些知识点,并提升在...
### Linux进程与线程创建详解 #### 进程与线程的概念 在深入探讨Linux下C语言编程中进程和线程的创建之前,我们先来理解一下进程与线程的基本概念。 - **进程**:是操作系统进行资源分配和调度的基本单位,每个...
在Linux操作系统中,多线程是一种程序设计技术,它允许单个进程内并行执行多个独立的线程,从而提高程序的并发性和效率。在这个"Linux下多线程模拟实验"中,我们将深入探讨如何使用C语言在Linux环境下实现生产者-...
详细介绍了linux下的程序、进程、线程的区别与共同点,是学习linux不可多得的好帮手
父进程创建三个子线程,第一个子线程对数组的前半部分进行选择排序,第二个子进程对数组的后半部分进行选择排序,第三个子线程对两个已经排序好的数组部分进行归并排序,最后当所有子线程结束之后,父进程输出排序好...
1. **Linux进程**:Linux操作系统支持多任务执行,这意味着在任何时刻,系统可以同时处理多个进程。这种并发执行的实现基于进程调度,即系统将CPU时间分配给各个进程,每个进程获得一个很短的时间片来执行。在用户...
Linux下多线程及多进程及同步与互斥编程详细介绍
在 Linux2.4 内核中,消除了这个线程个数的限制,并且允许在系统运行中动态地调整进程数上限。当时采用的是 LinuxThread 线程库,它对应的线程模型是“一对一”线程模型,也就是一个用户级线程对应一个内核线程,而...