运行debian jessie。 以root身份完成以下操作以避免任何权限问题。 首先我find我的程序的PID,然后检查它的打开的文件限制,以validation它设置为1024.但是,当我计算打开文件的数量,我发现1851年。 $ pgrep -x process_name 673 $ prlimit –pid 673 –nofile RESOURCE DESCRIPTION SOFT HARD UNITS NOFILE max number of open files 1024 4096 $ lsof -n -p 673 | grep -c "IPv4" 1851 为了更好的衡量,我检查过程没有任何subprocess,它可能是委托文件开头: $ pgrep -P 673 # no output 这里怎么了?
我是一个不受欢迎的人,在过去的一周里,我们已经两次推倒我们的高内存Linux机器,因为我一直在跑的更多内存。 解决这个问题的方法之一就是设置每个进程的ulimit,这样如果每个进程超过一定数量的内存使用量,进程将被终止。 有时候,虽然我需要大量的内存,而不是一些并行进程的ram。 而不是依靠我记得积极pipe理我的限制,每当我在不同的平行度上运行一个不同的工作时,是否有某种等同于ulimit的方法来查看用户总结的ram用法,然后杀死所有一些用户的进程,而不是沉没整个系统?
美好的一天, 我希望能够从我的Apache Httpd服务至less7000(最好是10k)并发请求。 我已经使用以下设置configuration了我的httpd.conf与MPM worker ServerLimit 330 StartServers 25 ThreadsPerChild 25 MaxClients 7500 我的Apache Httpd服务器除了对Java应用服务器集群进行反向代理以外,还对某些静态项目(如HTML / CSS / JS)进行一些(磁盘)caching。 在尝试使用JMeter(大约1k个并发请求)来敲打我的系统时,在几分钟内,我的服务器开始崩溃,但没有显示其他信息。 我的/etc/security/limits.confconfiguration为 * soft nofile 10000 * hard nofile 30000 apache soft nproc 8192 apache hard nproc 12288 * soft stack 512 * hard stack 1024 任何想法如何可以达到7k(或最好是10k)并发请求 [Mon Apr 09 21:47:42 2012] [alert] (11)Resource temporarily unavailable: […]
我正在运行一个服务于移动应用程序的API请求的Apache2 Ubuntu服务器。 最近我面临的一个瓶颈是,当请求越来越高(更多的并发用户),请求响应越来越慢。 以前需要1秒或2秒,但是一旦并发用户增加(在某个高峰时间),即使服务器负载, CPU和内存仍然很低,也可能会延迟10秒或更长时间。 我的目标是提高Apache2和Ubuntu Server在最低响应时间尽可能多的并发用户的能力。 内存和CPU不是主要的考虑因素,因为VPS规格如果达到极限,可以扩大规模。 我怎样才能做到这一点? 我到目前为止所做的: configurationulimit /etc/security/limits.conf并添加以下内容: 软nofile 40000 努力nofile 40000 软nproc 40000 将以下行添加到/etc/pam.d/common-session 会话需要pam_limits.so configurationApache2 /etc/apache2/mods-enabled/mpm_prefork.conf <IfModule mpm_prefork_module> StartServers 20 MinSpareServers 25 MaxSpareServers 100 MaxRequestWorkers 150 MaxConnectionsPerChild 0 MaxClients 8192 MaxRequestsPerChild 0 ServerLimit 8192 </ IfModule>configuration 将以下行添加到/etc/sysctl.conf fs.file-max = 2097152 响应时间似乎有所改善(虽然有些请求仍然延迟),但不令人满意,因为它仍然比非高峰时间慢得多。
我们最近开始在我们的一个nginx框中得到以下错误: 2011/05/25 16:35:51 [alert] 3580#0: accept() failed (24: Too many open files) 检查/etc/security/limits.conf,我们有这个: * soft nofile 900000 * hard nofile 900000 但是当我们做了/ proc / {pid} /限制它显示文件限制为1024.当我们重新启动nginx的问题是固定的,/ proc / {pid} /限制显示900000.我想这可能是由于因为机器已经重新启动,在启动之前,nginx已经启动,之后才能应用限制。 然而,我一直在读的关于限制和pam工作的一切都表明,这并不是真正的限制。 有人知道这里发生了什么? 编辑:对不起,应该提及操作系统和东西。 我们正在运行内核2.6.18-194.26.1.el5和nginx 1.0.1的CentOS
在CentOS发行版中,有一个/etc/security/limits.d/90-noproc.conf为所有用户设置了一个进程限制: # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 1024 我想保持这个限制,但允许一个用户有超过1024个进程。 由于服务器如何木偶化,我无法使用内置的bash ulimit命令。
我有一个长时间运行的脚本,在一台内存为8GB的Linux机器上启动了几个subprocess。 运行几个小时后,占用了近90%的内存,这使得其他服务(如SSH)在启动磁盘交换时无响应。 什么是以编程方式限制我的脚本和所有subprocess的总体内存使用量的最佳方式,而不是分别为每个进程设置特定的内存限制? 不同的subprocess可以使用非常不同的内存量,因此设置固定的阈值效率非常低。 理想情况下,我只想简单地指定“仅使用高达75%的内存”,并让系统根据需要在孩子之间进行划分,以确保在任何给定的时间内,我仍然可以SSH进入机器。 我首先尝试设置一个cron作业来自动将sshd设置为最高优先级,但这没有任何作用,而且我经常无法进入SSH,或者SSH提示速度太慢。
我想知道nginx如何处理吨活跃websocket连接? 有许多限制,如打开文件的数量,IP < – >(IP,端口)等之间的最大TCP连接数为65k。 当我使用nginx作为反向代理,并且在websocket的上游有5个节点时,nginx和每个节点之间是否有高达65k的活动TCP连接? 如果我有超过300K的活动客户端服务的nginx,当然。 或者nginx websocket代理以另一种方式工作? 还有我的另一个问题:我应该调整哪些参数(限制)来处理这么多的连接?
我有几个服务器有很多连接的一些问题。 服务器只是挂起新的networking连接(尽pipe在haproxy中的负载均衡function似乎是正确的)。 我无法连接到SSH,并且服务器无法连接到其他套接字。 我保持连接与屏幕上的一个控制台到服务器。 然后发生错误我无法通过屏幕执行任何命令。 # ls -bash: fork: Cannot allocate memory 我不能执行“free -m”来显示内存数量,但是我得到了监视实现,表明上次发送的值是(RAM free,Buffers free,Swap free)(3597MB,5793,573 3)。 尽pipe我将tcp_fin_timeout更改为15(9155 TIME_WAIT,55 ESTABLISHED),但服务器在netstat中有许多TIME_WAIT连接。 我只能运行ulimits -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited max nice (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 88064 max locked memory (kbytes, -l) 32 max […]
我试图在运行CentOS 6的机器上启用核心文件; 然而,我没有尝试过已经产生了核心文件…这是我所做的: 将以下两行添加到/etc/security/limits.conf : * hard core unlimited * soft core unlimited 将以下行添加到/etc/sysconfig/init : DAEMON_COREFILE_LIMIT='unlimited' 将以下行添加到/etc/profile : ulimit -c unlimited > /dev/null 2>&1 /etc/sysctl.conf添加到/etc/sysctl.conf : kernel.core_pattern = '/srv/core/%p_%t.core' fs.suid_dumpable = 1 我确信/srv/core存在,并有777权限。 我执行init 6来重启操作系统。 在系统恢复后,我执行了下面的C脚本,试图产生一个核心文件: #include <sys/types.h> #include <unistd.h> #include <signal.h> int main(int argc, char **argv) { kill(getpid(), SIGQUIT); } 它不会产生核心文件:( 我错过什么或做错了什么? 在此先感谢您的帮助!