RocketMQ 系统优化(CentOS)

贴出源码中的优化脚本先:

#!/bin/sh
#
# Execute Only Once
#
echo ‘vm.overcommit_memory=1‘ >> /etc/sysctl.conf
echo ‘vm.min_free_kbytes=5000000‘ >> /etc/sysctl.conf
echo ‘vm.drop_caches=1‘ >> /etc/sysctl.conf
echo ‘vm.zone_reclaim_mode=0‘ >> /etc/sysctl.conf
echo ‘vm.max_map_count=655360‘ >> /etc/sysctl.conf
echo ‘vm.dirty_background_ratio=50‘ >> /etc/sysctl.conf
echo ‘vm.dirty_ratio=50‘ >> /etc/sysctl.conf
echo ‘vm.page-cluster=3‘ >> /etc/sysctl.conf
echo ‘vm.dirty_writeback_centisecs=360000‘ >> /etc/sysctl.conf
echo ‘vm.swappiness=10‘ >> /etc/sysctl.conf
sysctl -p
echo ‘ulimit -n 655350‘ >> /etc/profile
echo ‘admin hard nofile 655350‘ >> /etc/security/limits.conf
DISK=`df -k | sort -n -r -k 2 | awk -F/ ‘NR==1 {gsub(/[0-9].*/,"",$3); print $3}‘`
[ "$DISK" = ‘cciss‘ ] && DISK=‘cciss!c0d0‘
echo ‘deadline‘ > /sys/block/$DISK/queue/scheduler
echo "---------------------------------------------------------------"
sysctl vm.overcommit_memory
sysctl vm.min_free_kbytes
sysctl vm.drop_caches
sysctl vm.zone_reclaim_mode
sysctl vm.max_map_count
sysctl vm.dirty_background_ratio
sysctl vm.dirty_ratio
sysctl vm.page-cluster
sysctl vm.dirty_writeback_centisecs
sysctl vm.swappiness
su - admin -c ‘ulimit -n‘
cat /sys/block/$DISK/queue/scheduler

这个脚本分别修改了网络参数 、admin的硬资源限制 、硬盘的刷盘模式

看了下 不能直接运行

需要做以下更改

这个脚本中使用了admin 这个用户,估计阿里的mq是用admin启动的

如果你用root启动RocketMQ 其中的

echo ‘ulimit -n 655350‘ >> /etc/profile
echo ‘admin hard nofile 655350‘ >> /etc/security/limits.conf

这两行可以注释掉, 不过生产环境中还是不推荐直接用root启动服务,所以我useradd admin了。

另个是硬盘优化部分

首先需要知道RockerMQ 运行产生的文件log 都会放在运行用户的家目录中

所以可以在home目录中建个admin 然后将盘挂到/home/admin就可以

接下来是硬盘刷盘模式( I/O Scheduling)

DISK=`df -k | sort -n -r -k 2 | awk -F/ ‘NR==1 {gsub(/[0-9].*/,"",$3); print $3}‘`
[ "$DISK" = ‘cciss‘ ] && DISK=‘cciss!c0d0‘
echo ‘deadline‘ > /sys/block/$DISK/queue/scheduler

这个也不适用于笔者的环境。目的是要把硬盘的刷盘模式改为deadline

查看下当前硬盘刷盘模式(笔者硬盘为sda)

#cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

好吧手动改下

echo ‘deadline‘ > /sys/block/sda/queue/scheduler

这种方式是立即生效 但是重启后会丢失

如果需要重启后也是deadline 需要添加grub参数

编辑/etc/grub.conf

找到kernel那行 在最后添加

elevator=deadline

至此完成了此脚本中所做的优化

最后贴出一份笔者改后的(仅仅把参数变量化 方便复用)

注意: (需要root 或 sudo权限才可执行) 请将脚本中用户和盘符换成你的

sed ‘s/kernel.*$/& elevator=deadline/‘ /etc/grub.conf

#!/bin/sh
#
# Execute Only Once 只可执行一次
#
#用户名
USER=admin
#磁盘盘符
DISK=sda
##在grub.conf中添加参数 默认注释掉 需要使用请取消注释
#sed -i ‘s/kernel.*$/& elevator=deadline/‘ /etc/grub.conf

echo ‘vm.overcommit_memory=1‘ >> /etc/sysctl.conf
echo ‘vm.min_free_kbytes=5000000‘ >> /etc/sysctl.conf
echo ‘vm.drop_caches=1‘ >> /etc/sysctl.conf
echo ‘vm.zone_reclaim_mode=0‘ >> /etc/sysctl.conf
echo ‘vm.max_map_count=655360‘ >> /etc/sysctl.conf
echo ‘vm.dirty_background_ratio=50‘ >> /etc/sysctl.conf
echo ‘vm.dirty_ratio=50‘ >> /etc/sysctl.conf
echo ‘vm.page-cluster=3‘ >> /etc/sysctl.conf
echo ‘vm.dirty_writeback_centisecs=360000‘ >> /etc/sysctl.conf
echo ‘vm.swappiness=10‘ >> /etc/sysctl.conf
sysctl -p
echo "ulimit -n 655350" >> /etc/profile
echo "$USER hard nofile 655350" >> /etc/security/limits.conf
echo ‘deadline‘ > /sys/block/$DISK/queue/scheduler
echo "---------------------------------------------------------------"
sysctl vm.overcommit_memory
sysctl vm.min_free_kbytes
sysctl vm.drop_caches
sysctl vm.zone_reclaim_mode
sysctl vm.max_map_count
sysctl vm.dirty_background_ratio
sysctl vm.dirty_ratio
sysctl vm.page-cluster
sysctl vm.dirty_writeback_centisecs
sysctl vm.swappiness
su - $USER -c ‘ulimit -n‘
cat /sys/block/$DISK/queue/scheduler

至此 优化结束。

I/O Scheduling 配置参照 http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.io.html#cha.tuning.io.schedulers

阿里os.sh源脚本:

https://github.com/alibaba/RocketMQ/blob/develop/bin/os.sh

时间: 2025-01-07 08:03:32

RocketMQ 系统优化(CentOS)的相关文章

CentOS 6 系统优化检测脚本

紧承上文<CentOS 6系统优化脚本>,因为有时候一台虚拟机已经刷过了优化脚本,但是可能因为别的原因,这台虚拟机暂时搁置了.等过了一段时间之后,突然要用又不知道这台虚拟机是否已经优化过了,而重新使用cobbler刷一次系统又会耗费一定的时间,所以这个检测系统是否刷过优化脚本的shell脚本就诞生了.脚本不是特别准确,但是能针对上次的优化脚本做一个检查,如果已经刷过脚本,就会通过运行该脚本知道系统已经优化过了,可以立即投入使用,避免浪费时间重新再刷一次系统.如果是一个完全重新安装的CentOS

CentOS 6系统优化脚本

由于自己经常用虚拟机来做各种测试,每次创建虚拟机都要重新把该关闭的服务(比如SELinux,postfix等),每次都要重新修改主机名等等,虽然可以打快照并进行虚拟盘克隆,但是磁盘文件太大也不是我所乐见的,所以仿照网上的做法,也弄了一个shell脚本来优化一下系统,这样的话每次刷一下脚本也确实省却了不少繁琐的步骤,还算可以吧. 其实生产环境中,也可以使用这种方法,比如使用cobbler来批量安装操作系统,在安装完操作系统之后直接刷系统优化脚本,也能实现最大限度的自动化安装系统.当然有人也会说使用

2、vmware安装centos系统以及基本的系统优化-鑫鑫linux运维网络培训

本节课主要讲解了安装centos系统以及基本的系统优化 更多视频试听课程:http://yunpan.cn/cVSrHAk8ExAd9  访问密码 aa19

CentOS 6一键系统优化 Shell 脚本

脚本的内容如下: #!/bin/bash#author suzezhi#this script is only for CentOS 6#check the OS platform=`uname -i`if [ $platform != "x86_64" ];then echo "this script is only for 64bit Operating System !"exit 1fiecho "the platform is ok"ve

Centos 7系统优化&lt;一&gt;.

centos7最小化安装后有一些组件需要自己安装,如iptables,wget,vim [[email protected] yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)  [[email protected] yum.repos.d]# uname -r                3.10.0-229.el7.x86_64 1.安装centos7选择基本安装,配置完网络后首先要先关闭fi

CentOS系统优化脚本,未完结

#!/bin/bash #判断一个当前用户是不是root用户,不是则提示需要使用sudo来提升权限 if [ $user != "root"] then echo "需要使用 sudo 才能使用的脚本"] exit 1 fi #设置Selinux为关闭状态 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #下载一个CentOS的yum源 cd /usr/loc

Centos 7 系统优化脚本

#!/bin/bash #author liuhui by #this script is only for CentOS 7.x #check the OS platform=`uname -i` if [ $platform != "x86_64" ];then echo "this script is only for 64bit Operating System !" exit 1 fi echo "the platform is ok"

CentOS系统优化系列之“修改时区和时间”

时间设置有几个相关的概念: 1.rtc时间/硬件时间:是指的例如主板上的某个实时时钟(rtc)硬件设备,这个时间是没有时区信息的,或者说他表示哪个时区的时间,依赖于"人为解读" 2.系统时间:这是被软件系统(这里指os)认知的时间,他包含时区和utc时间两部分 3.rtc时间.local.utc关系设置:如前述,rtc时间并不带有时区信息,就拿咱们大部分所处的东八区来说.现在是上午11点,rtc时间若设为11点,则rtc时间显然对应到东八区的local时间:如果rtc设定为早上3点,则

centos 系统优化

#!/bin/bash #0.disable selinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux #1.set ip address # #read -p "input interface num[eth0,eth1]:" int #read -p "input ip address:" ip #read -p "inpu