# vi /etc/sysctl.conf # add by digoal.zhou fs.aio-max-nr = 1048576 fs.file-max = 76724600 kernel.core_pattern= /data01/corefiles/core_%e_%u_%t_%s.%p # /data01/corefiles事先建好,權限777,如果是軟鏈接,對應的目錄修改為777 kernel.sem = 4096 2147483647 2147483646 512000 # 信號量, ipcs -l 或 -u 查看,每16個進程一組,每組信號量需要17個信號量。 kernel.shmall = 107374182 # 所有共享內存段相加大小限制(建議內存的80%) kernel.shmmax = 274877906944 # 最大單個共享內存段大小(建議為內存一半), >9.2的版本已大幅降低共享內存的使用 kernel.shmmni = 819200 # 一共能生成多少共享內存段,每個PG數據庫集群至少2個共享內存段 net.core.netdev_max_backlog = 10000 net.core.rmem_default = 262144 # The default setting of the socket receive buffer in bytes. net.core.rmem_max = 4194304 # The maximum receive socket buffer size in bytes net.core.wmem_default = 262144 # The default setting (in bytes) of the socket send buffer. net.core.wmem_max = 4194304 # The maximum send socket buffer size in bytes. net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_keepalive_intvl = 20 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_time = 60 net.ipv4.tcp_mem = 8388608 12582912 16777216 net.ipv4.tcp_fin_timeout = 5 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syncookies = 1 # 開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookie來處理,可防范少量的SYN攻擊 net.ipv4.tcp_timestamps = 1 # 減少time_wait net.ipv4.tcp_tw_recycle = 0 # 如果=1則開啟TCP連接中TIME-WAIT套接字的快速回收,但是NAT環境可能導致連接失敗,建議服務端關閉它 net.ipv4.tcp_tw_reuse = 1 # 開啟重用。允許將TIME-WAIT套接字重新用於新的TCP連接 net.ipv4.tcp_max_tw_buckets = 262144 net.ipv4.tcp_rmem = 8192 87380 16777216 net.ipv4.tcp_wmem = 8192 65536 16777216 net.nf_conntrack_max = 1200000 net.netfilter.nf_conntrack_max = 1200000 vm.dirty_background_bytes = 409600000 # 系統臟頁到達這個值,系統后台刷臟頁調度進程 pdflush(或其他) 自動將(dirty_expire_centisecs/100)秒前的臟頁刷到磁盤 vm.dirty_expire_centisecs = 3000 # 比這個值老的臟頁,將被刷到磁盤。3000表示30秒。 vm.dirty_ratio = 95 # 如果系統進程刷臟頁太慢,使得系統臟頁超過內存 95 % 時,則用戶進程如果有寫磁盤的操作(如fsync, fdatasync等調用),則需要主動把系統臟頁刷出。 # 有效防止用戶進程刷臟頁,在單機多實例,並且使用CGROUP限制單實例IOPS的情況下非常有效。 vm.dirty_writeback_centisecs = 100 # pdflush(或其他)后台刷臟頁進程的喚醒間隔, 100表示1秒。 vm.mmap_min_addr = 65536 vm.overcommit_memory = 0 # 在分配內存時,允許少量over malloc, 如果設置為 1, 則認為總是有足夠的內存,內存較少的測試環境可以使用 1 . vm.overcommit_ratio = 90 # 當overcommit_memory = 2 時,用於參與計算允許指派的內存大小。 vm.swappiness = 0 # 關閉交換分區 vm.zone_reclaim_mode = 0 # 禁用 numa, 或者在vmlinux中禁止. net.ipv4.ip_local_port_range = 40000 65535 # 本地自動分配的TCP, UDP端口號范圍 fs.nr_open=20480000 # 單個進程允許打開的文件句柄上限 net.ipv4.tcp_max_syn_backlog = 16384 net.core.somaxconn = 16384 # 以下參數請注意 # vm.extra_free_kbytes = 4096000 # vm.min_free_kbytes = 2097152 # vm.min_free_kbytes 建議每32G內存分配1G vm.min_free_kbytes # 如果是小內存機器,以上兩個值不建議設置 # vm.nr_hugepages = 66536 # 建議shared buffer設置超過64GB時 使用大頁,頁大小 /proc/meminfo Hugepagesize # vm.lowmem_reserve_ratio = 1 1 1 # 對於內存大於64G時,建議設置,否則建議默認值 256 256 32
2. 生效配置
sysctl -p
配置OS資源限制
# vi /etc/security/limits.conf
# nofile超過1048576的話,一定要先將sysctl的fs.nr_open設置為更大的值,並生效后才能繼續設置nofile.
* soft nofile 1024000
* hard nofile 1024000
* soft nproc unlimited
* hard nproc unlimited
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
最好在關注一下/etc/security/limits.d目錄中的文件內容,會覆蓋limits.conf的配置。
已有進程的ulimit請查看/proc/pid/limits,例如
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 11286 11286 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 11286 11286 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
如果你要啟動其他進程,建議退出SHELL再進一遍,確認ulimit環境配置已生效,再啟動。
配置OS防火牆
(建議按業務場景設置,我這里先清掉)
iptables -F
配置范例
# 私有網段
-A INPUT -s 192.168.0.0/16 -j ACCEPT
-A INPUT -s 10.0.0.0/8 -j ACCEPT
-A INPUT -s 172.16.0.0/16 -j ACCEPT
selinux
如果沒有這方面的需求,建議禁用
# vi /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
關閉不必要的OS服務
chkconfig --list|grep on
關閉不必要的,例如
chkconfig iscsi off
部署文件系統
注意SSD對齊,延長壽命,避免寫放大。
parted -s /dev/sda mklabel gpt
parted -s /dev/sda mkpart primary 1MiB 100%
格式化(如果你選擇ext4的話)
mkfs.ext4 /dev/sda1 -m 0 -O extent,uninit_bg -E lazy_itable_init=1 -T largefile -L u01
建議使用的ext4 mount選項
# vi /etc/fstab
LABEL=u01 /u01 ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0,data=writeback 0 0
# mkdir /u01
# mount -a