剩下的时间就开始学习开源项目,完善自己的项目。
接下来cillianplatform项目的更新频率保持一周一次,等稳定了到公开测试版本,会告知大家。
至于文章分享,本月的时间就是围绕项目四个模块来分享,传统模块,包括linux、网络、监控、日志等,云原生模块,围绕docker、k8s等,自动化模块、智能化平台模块等,然后就是项目更新的一些内容,和大家共同学习进步!
今天就从linux开始,先分享一个linux命令搜查学习的web版本,这个仓库里面命令能学个七七八八,你的linux肯定没问题。
仓库地址:
代码语言:javascript复制https://github.com/jaywcjlove/linux-command
本地docker部署:
下载镜像:
代码语言:javascript复制docker pull wcjiang/linux-command
# Or
docker pull ghcr.io/jaywcjlove/linux-command:latest
部署容器:
代码语言:javascript复制docker run --name linux-command --rm -d -p 9665:3000 wcjiang/linux-command:latest
# Or
docker run --name linux-command -itd -p 9665:3000 wcjiang/linux-command:latest
# Or
docker run --name linux-command -itd -p 9665:3000 ghcr.io/jaywcjlove/linux-command:latest
在浏览器中访问以下 URL:
代码语言:javascript复制http://localhost:9665/
可以看到部署非常方便,老手复习,新手学习都是非常好的,也可以部署到自己的网站,详情可以查看官方仓库,大家可以尝试一下!
再来看看linux内核常用的参数优化:
Linux内核参数优化可以根据不同的应用场景进行调整,以提高系统性能和稳定性。以下是一些常见的Linux内核参数优化:
- 文件系统缓存参数:文件系统缓存是Linux系统中的重要性能因素之一,可以通过调整以下参数进行优化:
- vm.dirty_background_ratio:设置脏页(未写回磁盘的页)的百分比,建议设置为10-20%。
- vm.dirty_ratio:设置系统在写入新的数据之前可以容忍的脏页数量的百分比,建议设置为30-40%。
- vm.dirty_expire_centisecs:设置脏页的过期时间,建议设置为3000-5000毫秒。
- 网络参数:网络性能是Linux系统中的另一个关键因素,可以通过以下参数进行优化:
- net.core.somaxconn:设置TCP半连接队列的最大长度,建议设置为1024或更高。
- net.core.netdev_max_backlog:设置网络接口队列的最大长度,建议设置为1000或更高。
- net.ipv4.tcp_syncookies:开启SYN Cookies防止SYN Flood攻击。
- net.ipv4.tcp_max_syn_backlog:设置SYN队列的最大长度,建议设置为1024或更高。
- 内存管理参数:内存管理是Linux系统的核心,可以通过以下参数进行优化:
- vm.swappiness:设置内存交换的程度,建议设置为10-15。
- vm.vfs_cache_pressure:控制内核如何释放缓存,建议设置为100或更高。
- vm.overcommit_memory:控制内存过度分配的策略,建议设置为0或1。
- 进程管理参数:进程管理是Linux系统的另一个重要方面,可以通过以下参数进行优化:
- kernel.pid_max:设置系统中最大进程ID号,建议设置为65536或更高。
- kernel.threads-max:设置系统中最大线程数,建议设置为65536或更高。
- kernel.sched_migration_cost_ns:设置进程迁移的代价,建议设置为500000或更高。
这里附上一个调优的脚本,我来简单翻译一下:
地址:
代码语言:javascript复制https://github.com/nyist-mirror/kernel_tuning
代码语言:javascript复制# !/bin/sh
#
####微调网络参数以获得更好的性能
当高传入连接请求率导致连接失败时,更改以下参数
Echo "100000" > /proc/sys/net/core/netdev_max_backlog
#接收新TCP连接的监听队列大小(默认:128)
Echo "4096" > /proc/sys/net/core/somaxconn
TIME-WAIT中同时持有的最大套接字数(默认:180000)
Echo "600000" > /proc/sys/net/ipv4/tcp_max_tw_buckets
#设置所有协议的最大Socket接收缓冲区(以字节为单位)
Echo "16777216" > /proc/sys/net/core/rmem_max
Echo "16777216" > /proc/sys/net/core/rmem_default
#设置所有协议的最大Socket发送缓冲区(以字节为单位)
Echo "16777216" > /proc/sys/net/core/wmem_max
Echo "16777216" > /proc/sys/net/core/wmem_default
设置Linux自动调优TCP缓冲区限制
Echo "4096 87380 16777216" > /proc/sys/net/ipv4/tcp_rmem
Echo "4096 87380 16777216" > /proc/sys/net/ipv4/tcp_wmem
Echo "0" > /proc/sys/net/ipv4/tcp_sack
Echo "0" > /proc/sys/net/ipv4/tcp_dsack
缺省情况下,TCP在连接关闭时将各种连接指标保存在路由缓存中,以便在不久的将来建立的连接可以使用这些指标来设置初始条件。通常,这会提高整体性能,但有时可能会导致性能下降。如果设置,TCP将不会缓存关闭连接时的度量。
Echo "1" > /proc/sys/net/ipv4/tcp_no_metrics_save
在终止TCP连接之前需要重试多少次
Echo "5" > /proc/sys/net/ipv4/tcp_retries2
如果连接当前未使用,发送TCP keepalive数据包以保持连接存活的频率。此值仅在启用keepalive时使用
Echo "120" > /proc/sys/net/ipv4/tcp_keepalive_time
每个keepalive探针等待应答的时间。换句话说,当您尝试计算连接死亡(keepalive死亡)之前需要多长时间时,此值非常重要。
Echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl
确定超时前的探测数
Echo "3" > /proc/sys/net/ipv4/tcp_keepalive_probes
#如果你是关闭socket的一方,socket保持FIN-WAIT-2状态需要多长时间(默认:60)
Echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout
#有时,网络中的数据包重排序可以解释为数据包丢失,因此增加该参数的值应该提高性能(默认值为“3″”)
Echo "15" > /proc/sys/net/ipv4/tcp_reordering
#
Echo "cubic" > /proc/sys/net/ipv4/ tcp_conestion_control
#该值取决于系统的总内存。在不同的情况下明智地使用它
# echo "262144" > /proc/sys/net/ipv4/tcp_max_orphans
#禁用核心转储
Echo "0" > /proc/sys/fs/ suid_dumable
#启用ExecShield
Echo "1" > /proc/sys/kernel/exec-shield
Echo "1" > /proc/sys/kernel/randomize_va_space
####网络参数,提高安全性
#禁用包转发(如果这台机器不是路由器)
Echo "0" > /proc/sys/net/ipv4/ip_forward
Echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
Echo "0" > /proc/sys/net/ipv4/conf/default/send_redirects
#启用tcp_syncookies在面对SYN flood攻击时接受合法连接
Echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# Turn off禁用IPv4协议特性,这些特性被认为很少有合法用途,而且很容易被滥用
Echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
Echo "0" > /proc/sys/net/ipv4/conf/default/accept_source_route
Echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
Echo "0" > /proc/sys/net/ipv4/conf/default/accept_redirects
Echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects
Echo "0" > /proc/sys/net/ipv4/conf/default/secure_redirects
#记录可疑数据包(如果系统有过多的日志记录,应该关闭此功能)
Echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
#防范ICMP攻击
Echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
Echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#启用rfc推荐的源验证(不应该在非常复杂网络的路由器上使用)
Echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
Echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter
增加IPv4端口范围以接受更多连接
Echo "5000 65535" > /proc/sys/net/ipv4/ip_local_port_range
#禁用IPV6
Echo "1" > /proc/sys/net/ipv6/conf/all/disable_ipv6
Echo "1" > /proc/sys/net/ipv6/conf/default/disable_ipv6
#
####文件系统调优
增加系统文件描述符限制
Echo "7930900" > /proc/sys/fs/file-max
#允许更多pid
/proc/sys/kernel/pid_max
使用高达95%的RAM(5%空闲)
Echo "5" > /proc/sys/vm/swappiness
#
Echo "20" > /proc/sys/vm/dirty_background_ratio
#
Echo "25" > /proc/sys/vm/dirty_ratio
Echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
参考文献:
- http://docs.oracle.com/cd/E19644-01/817-5051/pt_tuningos.html#wp62221
- http://www.netadmintools.com/art295.html
- https://cs.uwaterloo.ca/~brecht/servers/openfiles.html
- http://www.nateware.com/linux-network-tuning-for-2013.html
- http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/
- http://aiscaler.com/wiki/linux-tuning-for-high-performance
- http://www.cyberciti.biz/faq/linux-tcp-tuning/
- https://www.frozentux.net/ipsysctl-tutorial/ipsysctl-tutorial.html
- http://www.susegeek.com/networking/network-performance-fine-tuning-in-opensuse-suse/
今天的分享就到这了,祝学习顺利!