一般新机器,在非root用户下部署java项目之前,一定需要新调整下机器的参数,这里与我们的java进程息息相关的就是 /etc/ecurity/limits 这里的配置。
/etc/ecurity/limits 限制住了系统用户下所有的文件句柄数,线程数,cpu时间片等等。我们这里只需要关注文件 句柄数和线程数 。
可以查看系统的资源限制,如下:
上面的 open files (-n) 65536 和 max user processes (-u) 4096 是我们重点关注的。它限制了文件最大句柄数和线程数。
编辑 /etc/security/limits.conf , 修改如下配置:
注意 :还需要修改一个地方,否则我们进程的最大限制会被重置掉,笔者之前在这个地方踩了不少坑。需要编辑 /etc/security/limits.d/ 下的文件。
这个 * 会有一个软线程的最大限制为 4096,会覆盖 /etc/security/limits.conf 里的配置。一般程序启动的线程都是属于 soft nproc 。
网上的说法是修改了 limit 后,重启linux系统才会奏效。事实上不是这样,修改了之后,新启动的进程会使用新的limit限制参数,而之前起的进程还是会使用老的配置,所以只需要重启进程即可。
可以评估一个应用的指标情况,可以看他的句柄数、线程数等等, 在 /proc/{pid}/fd/ 可以查看进程所有打开的文件,socket连接也是一个文件,当存在很多socket没有释放的话,说明open 文件没有关闭或者释放。
linux的开源和免费使得越来越多的厂家用它来做防火墙和路由器,今天本文用linux来打造一台高性能的能够限速的路由器。文章就以red hat为例教大家在linux下进行路由器限速。
linux的开源和免费使得越来越多的厂家用它来做防火墙和路由器,如海蜘蛛,飞鱼星等,其实我们也可以用linux来打造一台高性能的路由器。下面就以red hat为例(其他版本大同小异)教大家做一台能限速的`路由器,如何在linux下进行路由器限速就不再困难了。
安装linux如果是新手请安装时安装图形桌面。Linux路由器限速的设置步骤如下:
路由器限速第一步:建立adsl连接,在系统设置——网络设置处有。在图形界面下很容易搞定。
路由器限速第二步:打开IP转发和伪装(也就是路由与NAT)
1、作为根用户打开/etc/sysconfig/network文件,在文件增加以下一行:
GATEWAYDEV=PPP0 这句话的作用是设定默认路由,有时没有也可
2、打开IP转发功能:打开/etc/sysctl.conf文件,修改net.ipv4.ip_forward=0一行,改0改为1
3、重启系统
路由器限速第三步:设置iptables防火墙,决定那些IP能通过linux主机上网。
下面以允许192.168.0.0网段为例:
1、打开终端在#字提示符下输入以下命令:
iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE #这句意思是伪装从pppo出去的IP
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT #这句意思是转发来自192。168。0。0网段的通讯
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT #这句意思是转发到达192。168。0。0网段的通讯
iptables -A FORWARD -s ! 192.168.0.0/24 -j DROP #这句意思是拒绝转发非192.168.0.0网段的通讯。
2、保存以上防火墙规则,以保证重启后还有效, 输入命令:iptables-save >/etc/sysconfig/iptables,这样,你的linux路由器应该就能跑起来了。
linux做路由器限速的实现:在linux中有专门限速的软件--tc,但TC的语法新手难以掌握,我们可以在防火墙上通过限定某个IP或某段IP在一秒内通过的数据包的数量来限速。
下面以限制192.168.0.2这个IP的网速为例说说,在桌面环境下打开/etc/syscofngi/iptables 有没有发现,刚才的设定全记录在这个文件里,现在做的就在这个文件里添加规则就得了。
1、先要找到filter
2、在filter下面一行增加以下两行:
-A FORWARD -m limit -d 192.168.0.2 --limit 30/sec -j ACCEPT # 这句意思是限定每秒只转发30个到达192。168。0。2的数据包(约每秒45KB 一个数据包是1.5KB)
-A FORWARD -d 192.168.0.2 -j DROP #这句作用是超过限制的到达192.168.0.2的数据包不通过)
3、路由器限速经过重启系统就实现了。
进程最大打开文件描述符数:user limit中nofile的soft limita.查看
$ ulimit -n
1700000
2. 设置
a.临时性:通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit不能大于hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默认查看的是soft limit,但是ulimit -n 1800000则是同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。
查看hard limit:
$ ulimit -Hn
1700000
设置soft limit,必须小于hard limit:
$ ulimit -Sn 1600000
2.永久性:上面的方法只是临时性的,注销重新登录就失效了,而且不能增大hard limit,只能在hard limit范围内修改soft limit。若要使修改永久有效,则需要在/etc/security/limits.conf中进行设置(需要root权限),可添加如下两行,表示用户chanon最大打开文件描述符数的soft limit为1800000,hard limit为2000000。以下设置需要注销之后重新登录才能生效:
chanon softnofile 1800000
chanon hard nofile 2000000
设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后无法正常登录。可以修改nr_open的值:
# echo 2000000 >/proc/sys/fs/nr_open
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)