一、调整TCP的滑动窗口

大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数。可以修改这些参数来分配更多的内存,从而改进网络性能。设置内核参数的方法是通过 proc 接口,也就是通过读写 /proc 中的值。幸运的是,sysctl 可以读取 /etc/sysctl.conf 中的值并根据需要填充/proc,这样就能够更轻松地管理这些参数。下面展示在互联网服务器上应用于 Internet 服务器的一些网络设置。

# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000

将这些设置添加到 /etc/sysctl.conf 的现有内容中。

第一个设置启用 TCP SYN cookie。当从客户机发来新的 TCP 连接时,数据包设置了SYN 位,服务器就为这个半开的连接创建一个条目,并用一个 SYN-ACK 数据包进行响应。在正常操作中,远程客户机用一个 ACK 数据包进行响应,这会使半开的连接转换为全开的。

有一种称为 SYN 泛滥(SYN flood) 的网络***,它使 ACK 数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYN cookie 特性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间。大多数系统都默认启用这个特性,但是确保配置这个特性更可靠。
启用 TCP 窗口伸缩使客户机能够以更高的速度下载数据。TCP 允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多 64 KB,在与延迟比较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增加窗口大小。
后面四个配置项增加 TCP 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发送数据的能力。
最后一个配置项增加可用的本地端口数量,这样就增加了可以同时服务的最大连接数量。
在下一次引导系统时,或者下一次运行 sysctl -p时,设置就会生效。

----------------------------------------------------------------------------------------

二、文件子系统的调优
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
3)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
**************************************
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外确保/etc/pam.d/system-auth文件有下面内容 session required /lib/security/$ISA/pam_limits.so 这一行确保系统会执行这个限制。
***********
3.一般用户的.bash_profile
#ulimit -n 1024功能检测到这些连接,缺省情况下,在2小时之后丢掉. 2个小时的可能导致内存过度使用,降低性能。因此改成1800秒(30分钟)是个更好的选择:sysctl -w net.ipv4.tcp_keepalive_time=1800

--------------------------------------------------------------------------------------

三、网络安全设置:
TCP SYN Flood ***
TCP SYN Flood是一种常见,而且有效的远端(远程)拒绝服务(Denial of Service)***方式,它透过一定的操作破坏TCP三次握手建立正常连接,占用并耗费系统资源,使得提供TCP服务的主机系统无法正常工作。由於TCP SYN Flood是透过网路底层对服务器Server进行***的,它可以在任意改变自己的网路IP地址的同时,不被网路上的其他设备所识别,这样就给防范网路犯罪部门追查犯罪来源造成很大的困难。
系统检查
一般情况下,可以一些简单步骤进行检查,来判断系统是否正在遭受TCP SYN Flood***。
1.服务端无法提供正常的TCP服务。连接请求被拒绝或超时。
2.透过 netstat -an 命令检查系统,发现有大量的SYN_RECV连接状态。
3.iptables的设置,引用自CU
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s #限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水***(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
----------------------------------------------------------------------------------------------------------------------------
暂定步骤:
修改/etc/profile文件,加入:

       ulimit -u 10240ulimit -n 4096ulimit -d unlimitedulimit -m unlimitedulimit -s unlimitedulimit -t unlimitedulimit -v unlimited

修改/etc/rc.d/rc.local,加入:

       echo ‘131072′ > /proc/sys/fs/file-maxecho ‘131072′ > /proc/sys/fs/inode-max

(1G内存值修改成:65535 2G内存值修改成:131072 4G内存值修改成:262144)
修改/etc/sysctl.conf文件,加入:

       net.core.rmem_default = 8388608net.core.rmem_max = 8388608net.core.wmem_default = 8388608net.core.wmem_max = 8388608net.ipv4.tcp_timestamps = 0net.ipv4.tcp_sack =1net.ipv4.tcp_window_scaling = 1net.core.netdev_max_backlog=3000#Modify i-nodesys.fs.file-max= 65535sys.fs.inode-max= 65535#Set System Memoryvm.bdflush="30 500 0 0 500 3000 60 20 0"vm.kswapd="1024 32 64"#Disable HackAttack!net.ipv4.conf.eth0.accept_source_route=0net.ipv4.conf.lo.accept_source_route=0net.ipv4.conf.default.accept_source_route=0net.ipv4.conf.all.accept_source_route=0net.ipv4.conf.lo.accept_redirects=0net.ipv4.conf.all.accept_redirects=0net.ipv4.conf.eth0.accept_redirects=0net.ipv4.conf.default.accept_redirects=0net.ipv4.conf.lo.secure_redirects=0net.ipv4.conf.all.secure_redirects=0net.ipv4.conf.eth0.secure_redirects=0net.ipv4.conf.default.secure_redirects=0net.ipv4.conf.eth0.send_redirects=0net.ipv4.conf.lo.send_redirects=0net.ipv4.conf.default.send_redirects=0net.ipv4.conf.all.send_redirects=0net.ipv4.tcp_syncookies=1net.ipv4.icmp_echo_ignore_broadcasts=1net.ipv4.icmp_ignore_bogus_error_responses=1#Web Serversnet.ipv4.tcp_tw_reuse=1net.ipv4.tcp_tw_recycle=1net.ipv4.tcp_fin_timeout=30net.ipv4.tcp_keepalive_time=1800net.ipv4.core.wmem_max=16777216net.ipv4.core.rmem_max=16777216net.ipv4.tcp_rmem="4096 87380 8388608"net.ipv4.tcp.wmem="4096 87380 8388608"net.ipv4.tcp_max_syn_backlog=8192

防火墙安全:

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

也有人写作

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s

限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping洪水***(Ping of Death)

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

备注说明:(相对比较激进的网络参数调整)

       # Use TCP syncookies when needednet.ipv4.tcp_syncookies = 1# Enable TCP window scalingnet.ipv4.tcp_window_scaling: = 1# Increase TCP max buffer sizenet.core.rmem_max = 16777216net.core.wmem_max = 16777216# Increase Linux autotuning TCP buffer limitsnet.ipv4.tcp_rmem = 4096 87380 8388608net.ipv4.tcp_wmem = 4096 65536 8388608# Increase number of ports availablenet.ipv4.ip_local_port_range = 1024 65000

----------------------------------------------------------------------------------------------------------------------------
四、LINUX安全设置步骤:
1.删除所有那些不能在你系统上使用的默认用户和组账户: lp,sync,shutdown,halt, news, uucp, operator, games, gopher ROOT自动从shell注销
编辑你的配置文件”vi /etc/profile”,在某个地方加入如下行,

“HISTFILESIZE=”TMOUT=3600
我们为变量”TMOUT=”输入的这个值使用秒表示的、代表一个小时(60*60=3600秒)。如果你将此行加入你的“/etc/profile” 文件,那么在一小时的非活动状态之后将要系统里的所有用户自动注销。你可以在用户私人的”。bashrc”文件里面设置这个变量,可以在一个确定的时间以后自动注销他们。
2.禁止并且卸载所有没有用的服务
你必须禁止别切卸载所有你不用的的服务,那样的话,你就能少担心一些。看看你的”/etc/inetd.conf”文件, 用注释的方法禁用(在一行的开始加个#),然后给inetd进程发送一个SIGHUP命令去更新到当前的”inetd.conf”文件。这样做:
第一步把”/etc/inetd.conf”更改许可权限成600,那样的话,就只有root可以读和写。[Root@kapil /]# chmod 600 /etc/inetd.conf
第二步确保”/etc/inetd.conf”的所有者是root。
第三步编辑inetd.conf文件(vi /etc/inetd.conf),并且禁止一些服务,就像:ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth等等,除非你打算用它。关闭这些服务就降低一些风险。
第四步给你的inetd进程发送一个HUP信号[root@kapil /]# killall -HUP inetd
第五步设置”/etc/inetd.conf”文件为不可更改,使用 chattr 命令,这样的话,没人能修改那个文件。*简单的设置文件为不可更改,执行如下命令:
[root@kapil /]# chattr +i /etc/inetd.conf
这将防止对”inetd.conf”文件的任何更改(意外的更改或者其他更改)。只有超级用户root能设置或者清除这个文件属性。修改inetd.conf *简单的取消不可更改的设置,执行如下命令:
[root@kapil /]# chattr -i /etc/inetd.conf
3.免疫”/etc/services”文件
你必须免疫 “/etc/services” 文件,防止未经授权的删除、增加服务。
免疫 “/etc/services” 文件,使用命令:
[root@kapil /]# chattr +i /etc/services
禁止Control-Alt-Deletc键盘关机命令
在你的”/etc/inittab”文件里面注释掉如下的行(用一个”#”)。这样做,编辑inittab文件(vi /etc/inittab),更换:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
读入:#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
现在,按照如下提示输入,让更改生效:
[root@kapil /]# /sbin/init q 为脚本文件整理”/etc/rc.d/init.d”下的权限整理脚本文件的许可权限,可靠的开始和结束所有你需要在引导时运行的常态进程,这样做:
[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
这意味着只有root可以被允许读,写,和执行目录里面的脚本文件。

4.隐藏你的系统信息
默认状态下,当你登录到linux机器时,他告诉你Linux分布商的名字,版本,核心版本和服务器名字。这对一个骇客来说从你的服务器得到这些信息足够了以必须立刻用一个”Login:”提示符提示用户。
第一步
这样做,编辑”/etc/rc.d/rc.local”文件,放置”#”在如下行的前面。

# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo “” >; /etc/issue
#echo “$R” >;>; /etc/issue
#echo “Kernel $(uname -r) on $a $(uname -m)” >;>; /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >;>; /etc/issue

第二步
然后,删除如下文件:在”/etc/”目录下的”issue.net” 和 “issue”:
[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net
5.禁止未用的 SUID/SGID 程序
一个常规用户如果设置为SUID root,将能够作为root运行程序。一个系统管理员必须最小化使用这些 SUID/GUID程序, 而且禁止那些不需要的程序。
从root拥有的程序里发现所有有`s’ 位的程序,用此命令:
[root@kapil]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
* 在被选中的程序上禁止suid 位,键入如下命令:
[root@kapil /]# chmod a-s [program]
6.关闭ipv6
vi /etc/modprobe.conf,在文件中添加以下两行
alias net-pf-10 off
alias ipv6 off

转载于:https://blog.51cto.com/nanchunle/1658988

LINUX性能调优方法总结相关推荐

  1. 机器学习模型调优方法(过拟合、欠拟合、泛化误差、集成学习)

    机器学习模型调优方法 过拟合和欠拟合 降低过拟合风险的方法 降低欠拟合风险的方法 泛化误差.偏差和方差 泛化误差 偏差和误差 模型评估 Holdout检验 交叉检验 自助法 集成学习 Boosting ...

  2. Linux性能调优用这个“必杀技”,稳了!

    " "这个系统好慢.网站又打不开了,太卡了,又没响应了!"相信大家都遇到过这种抱怨,这是应用系统出现了性能问题,需要性能调优. 性能调优,要求对计算机硬件.操作系统和应用 ...

  3. mysql port range_MySQL 数据库常见调优方法及参数设置_MySQL

    1. 关闭 SELinux vim /etc/selinux/config 更改 SELINUX=enforcing 为 SELINUX=disabled 2. 更改 IO Schedule, 对于 ...

  4. linux性能调优命令精华

    linux性能调优命令精华 2010年07月18日 linux性能调优命令精华 时间:2010-6-23 一. 查看硬盘读取速度 命令:hdparm -t /dev/sda5 打印:Timing bu ...

  5. oracle性能调优总结,Oracle的调优方法总结

    根据自己项目在使用Oracle中的经验,及Oracle参考手册,对于oracle的调优方法一点点的总结. 以后的篇幅会讨论表空间和数据文件的建立对Oracle并发的影响.本文只是讨论SGA和PGA和S ...

  6. linux 分析磁盘性能,03.分析性能瓶颈 - 3.4.磁盘瓶颈 - 《Linux性能调优指南》 - 书栈网 · BookStack...

    磁盘瓶颈磁盘瓶颈性能调优选项 磁盘子系统通常是服务器性能的最重要方面,是瓶颈问题的高发部件.但是,磁盘问题表现的有时候并不是那么直接,比如说可能是内存不足.如果CPU周期浪费在等待I/O任务完成,应用 ...

  7. 运维基础(9)Linux性能调优三大系统

    这个系统好慢.网站又打不开了,太卡了,又没响应了!"相信大家都遇到过这种抱怨,这是应用系统出现了性能问题,需要性能调优. 性能调优,要求对计算机硬件.操作系统和应用有相当深入的了解. 调节三 ...

  8. 基本linux性能调优技巧

    导读 Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它 ...

  9. 关于Linux性能调优之内存负载调优

    写在前面 整理一些Linux内存调优的笔记,分享给小伙伴 博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文内容涉及: Linux内存管理的基本理论 寻找内存泄露的进程 内存交换空间调优 ...

最新文章

  1. 算法串匹配C++实现字符串匹配的KMP算法
  2. matlab中textread 函数
  3. 一文解读使用WinDbg排查iis 中CPU占用高的站点问题
  4. shellcode---c和汇编混合编程---弹出cmd
  5. android studio 2.1.1 优化,Android Studio 2.1 + javaCV 1.2 配置
  6. 1621: [Usaco2008 Open]Roads Around The Farm分岔路口(记忆化搜索)
  7. 自己的电脑怎么测网速
  8. 30:NET5源码解读
  9. 无锡python程序员_Python程序员学习路线图
  10. Mobile - 小米手机如何开通应用分身?应用多开?
  11. ASCII编码以及转换
  12. [BJDCTF2020]Mark loves cat详细解法与思路
  13. 我裸辞全职接单第一个月的收入
  14. [AV1] AV1技术专栏(正在更新中)
  15. eclipse MAVEN插件正确使用方式。
  16. SSM综合复习之MyBatis
  17. 内容为王的时代,如何让员工成为你的KOL?
  18. nginx屏蔽中国ip地址以及开放特定ip地址
  19. 【STM32H7】第5章 RTX5操作系统移植(MDK AC6)
  20. 电脑启动多个微信的方法

热门文章

  1. 4、Docker 提交运行中容器作为新的镜像
  2. INVEST优秀用户故事的特点
  3. linux双机热备 oracle,oracle for linux双机热备实战
  4. 中原银行数字化营销体系建设实践
  5. KVM虚拟机的优化历程---按需优化
  6. python--通过xpath相对节点位置查找元素(续)
  7. Java窗口(JFrame)从零开始(8)——文本框+文本域+密码框
  8. 学院菌喊你来领取年终学习奖状啦~~!!!
  9. 金蝶记账王无法打开智能卡注册页面怎么办
  10. 从性能方面谈系统设计