RocketMQ os.sh 系统优化(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 | 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 | 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
#cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
这种方式是立即生效 但是重启后会丢失
如果需要重启后也是deadline 需要添加grub参数
编辑/etc/grub.conf
找到kernel那行 在最后添加
elevator=deadline
至此完成了此脚本中所做的优化
最后贴出一份笔者改后的(仅仅把参数变量化 方便复用)
注意: (需要root 或 sudo权限才可执行) 请将脚本中用户和盘符换成你的
#!/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
转自:https://my.oschina.net/firxiao/blog/315647
RocketMQ os.sh 系统优化(CentOS)的更多相关文章
- RocketMQ runbroker.sh 分析JVM启动参数
runbroker.sh #====================================================================================== ...
- [系统优化]Centos系统优化
在运维工作中,我们发现Linux系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.以下是我在日常生产应用的优化操作. 一.文件打开数限制优化 描述 生产下要调整 ...
- CentOS -- RocketMQ 4.3.2 standalone Installation and Configuration
1 Download RockeMQ Package: You need to download it and put it to the OS Image. wget http://apache.c ...
- centos安装rocketMQ
1.下载安装包 http://rocketmq.apache.org/release_notes/ 这里选择 4.4.0 版本,点击进去 可以选择源码包或者二进制文件,这里选择二进制文件(ps:如果选 ...
- (原创)Rocketmq分布式消息队列的部署与监控
-------------------------------------------------------------------------------------------- 一.Rocke ...
- RocketMQ 使用及常见问题
前言 本文档是针对RocketMQ使用及常见问题的说明. 一.获取项目.安装包及文档 1. alibaba/RocketMQ https://github.com/alibaba/RocketMQ 2 ...
- rocketmq总结(消息的高可用、中间件选型)
rocketmq总结(消息的高可用.中间件选型) 参考: https://blog.csdn.net/meilong_whpu/article/details/76922456 http://blog ...
- RocketMQ 安装详细说明
原文:RocketMQ 安装详细说明 目录 本文导读 环境说明 RocketMQ 下载 从 Apache 下载 从 GitHub 下载 RocketMQ 安装 文件上传 项目解压 编译部署 Rocke ...
- 分布式消息队列RocketMQ部署
一.RocketMQ简介: RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.支持严格的消息顺序: 2.支持Topic与Queue两种模式: 3.亿级消息堆积能力: 4.比较友好 ...
随机推荐
- 1066: 单词游戏(game)
var i,j,k,n,ans,p,len,chk,zh:longint; ch:char; s:string; a:array[..] of longint; begin readln(ch); c ...
- JAVA的Spring注入机制事例详解
一.前言 最近使用Spring里面的依赖注入,比如StudentServiceImple2.java代码: package di.service.imple; import com.mengya.sp ...
- MySQL源代码解读
第一步: 下载bison-2.4.1-setup.exe链接地址 第二步: 下载cmake-2.8.6-win32-x86.exe链接地址 第三步: 下载MySQL链接地址 G:\Mlearn\mys ...
- openerp学习笔记 视图继承(tree、form、search)
支持的视图类型:form.tree.search ... 支持的定位方法: <notebook position="inside"> ...
- excel主题使文档更加具有专业化
如上图所示,表格或图表有很多的配色方案. 1.每个主题,会有一套配色方案,而且这些配色方案相对来讲都是比较协调统一的, 2.页面布局----主题,选择好主题之后再套用配色方案
- jQuery操作radio、checkbox、select总结
1.radio:单选框 HTML代码: <input type="radio" name="radio" id="radio1" va ...
- Linux(centos6.5)下安装jenkins
Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎. 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插件, 对于我来说,也是应用在系统部署上. 废话不多说,直接进入我们的安 ...
- Q值, 电感Q因素, 电感品质因素, Inductor Q, Quality Factor
Q值基本概念 Q值, 品质因素, Quality Factor 是广泛使用于物理和工程领域的一个参数, 这指的是一个机械或非机械的组件里, 共振(谐振)的能量损失比例, 是衡量一个元件或谐振回路性能的 ...
- Ubuntu16.04 安装使用KiCad
KiCad是一个带模拟器的电路设计软件, 官网 http://kicad-pcb.org/, 当前版本是4.0.7 安装 参考http://kicad-pcb.org/download/ubuntu/ ...
- iOS中判断网络是否联网
#import "AppDelegate.h" #import "ViewController.h" #import "Reachability.h& ...