[转]优化Linux服务器的经验之谈

news/2024/6/18 0:58:16 标签: 服务器, linux, 优化, sockets, centos, nginx

引自:http://www.lvtao.net/showarticle.php?articleid=673

 


一、时间同步

生产环境下的服务器对时间的要求是精准的,编辑

vim /etc/crontab 至今每天跟ntp时间服务器自动对时一次:

30 1 * * * /usr/sbin/ntpdate 192.43.244.18


二、启用内核中的SYN cookie保护:

echo "1" > /proc/sys/net/ipv4/tcp_syncookies 执行以下命令使内核配置立马生效:

/sbin/sysctl -p


三、Squid服务器变慢的解决方法

如果自己的生产服务器是squid缓存服务器,当发现系统变慢或打开网页变慢时可输入下列命令:

netstat -n | awk '/^tcp/ {++S[$NF]} /
END {for(a in S) print a, S[a]}' 这条命令可以把当前系统的网络连接状态分类汇总,由此分析出系统变慢的原因。



Linux下高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以

减少Squid服务器的TIME_WAIT套接字数量。

vim /etc/sysctl.conf 增加以下几行:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000 说明:

net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小,改为1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_max_tw_buckets = 5000表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为 180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

执行以下命令使内核配置立马生效:

/sbin/sysctl –p



四、Nginx服务器的情况

如果服务器是Nginx负载均衡器或用于Nginx+PHP5的web服务器,此二项也必须打开:

net.ipv4.tcp_tw_reuse = 1 #允许重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1 #开启TCP连接快速回收执行以下命令使内核配置立马生效:

/sbin/sysctl –p



五、调整Linux的最大文件打开数

Linux最大文件打开数的默认值很低,必须修改的高一些,否则squid服务器在高负载时执行性能将很低。

vim /etc/security/limit.conf,在最后一行添加

* soft nofile 60000 * hard nofile 65535

值得注意的是,通过命令ulimit -SHn是改变不了linux系统的最大文件打开数的,写进/etc/rc.d/rc.local也是不行的。





六、停止ipv6

线上跑的Linux服务器,绝大多数是64位的CentOS。CentOS默认的状态下,ipv6是被启用的状态。因为我们不使用ipv6,所以,停止

ipv6能够以最大限度保证安全和快速。

vim /etc/modprobe.conf 修改此配置文件,添加如下行到文尾:

alias net-pf-10 off
alias ipv6 off
echo "IPV6INIT=no" >> /
/etc/sysconfig/network-scripts/ifcfg-eth0

 

 

 

 


http://www.niftyadmin.cn/n/1054881.html

相关文章

使用SQL Developer导入文件时出现的一个奇怪的问题

SQL Developer 的版本是 17.3.1.279 当我导入文件的时候,在Data Preview 的阶段,发现无论选择还是取消选择 Header,文件中的第一行总会被当作字段名。 后来在Oracle Community 中建了一个讨论,然后跟据别人的回复,尝试…

解决rails4.0中send_file文件下载两次的问题

之前在开发文件下载的功能时,我遇到了一个很奇怪的问题,点击下载链接,在chrome console中会出现两次请求,第一次返回200,下载的数据缓存在chrome的cache中,第二次返回304,直接从本地获取到下载的…

客户端加锁

对封装好的jar包来说,使用它的代码都是客户端。 客户端加锁是指,对于使用某个对象X的客户端代码,使用X本身用于保护其状态的锁来保护这段客户端代码。要使用客户端加锁,必须知道对象X使用的是哪一种锁。 public class ListHelpe…

Win10+Python+virtualenv 环境配置

Win10Pythonvirtualenv 环境配置 2017年10月25日 15:23:58 猫儿不熊 阅读数 2813 版权声明:本文为博主原创文章,未经博主允许不得转载。 http…

logging 模块

import logging包含 info,debug(默认不打印)error,warning,critical指定日志打印级别把日志输出到文件里logging.basicConfg(filenamexxx.log,level logging.INFO)加上时间logging.basicConfig(filenamexxx.log, …

JetBrains PyCharm(Professional版本)的下载、安装和初步使用

不多说,直接上干货! 首先谈及这款软件,博主我用的理由:搞机器学习和深度学习! 想学习Python的同学们,在这里隆重介绍一款 Python 的开发工具 pyCharm IDE。这是我最喜欢的 Python编辑器利器。而且还是跨平台…

[转]Linux下NFS(网络文件系统)的建立与配置方法

用到这个了记录下来。引自:http://server.zdnet.com.cn/server/2007/0831/482007.shtml 网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络…

【java的协逆变】猫是动物,一群猫是不是一群动物?明白这一点基本上就知道为什么会有协逆变了

为什么要使用协变和逆变? 上一节讨论了什么是协变和逆变,这一节讨论一下为什么会有协变和逆变。 java中有一个特性叫做继承,一个类叫做动物,动物的种类繁多,不能将所有的动物属性和行为都放在一个类中,于是…