OS内核参数和JVM参数的调整

OS内核参数调整

vm.overcommit_memory  内存分配策略:可选值:0,1,2

0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2: 表示内核允许分配超过所有物理内存和交换空间总和的内存。

一般需要将这个参数的值调整为1

可以用如下命令修改: echo 'vm.overcommit_memory=1'>> /etc/sysctl.conf


vm.max_map_count  文件句柄数

这个参数的值会影响中间件系统可以开启的线程的数量。

如果这个参数过小,有的时候可能会导致有些中间件无法开启足够的线程,进而导致报错,甚至中间件系统挂掉。

可以用如下命令修改: echo 'vm.max map_ count=655360' >> /etc/sysctl.conf.


vm.swappiness  控制换出运行时内存的相对权重

os会把一部分磁盘空间作为swap区域,然后如果有的进程现在可能不太活跃,就会被操作系统把进程调整为睡眠状态,把进程中的数据放入磁盘上的swap区域,然后这个进程把原来占用的内存空间腾出来,交给其他活跃运行的进程来使用。

如果这个参数的值设置为0,意思就是尽量别把任何一个进程放到磁盘swap区域去,尽量大家都用物理内存。

如果这个参数的值是100,那么意思就是尽量把一些进程给放到磁盘swap区域去,内存腾出来给活跃的进程使用。

默认这个参数的值是60,有点偏高了,可能会导致我们的中间件运行不活跃的时候被迫腾出内存空间然后放磁盘swap区域去。

因此通常在生产环境建议把这个参数调整小-些,比如设置为10,尽量用物理内存,别放磁盘swap区域去。

可以用如下命令修改: echo 'vm.swappiness=10' >> /etc/sysctl.conf。


ulimit

这个是用来控制inux上的最大文件链接数的,默认值可能是1024, 一般肯定是不够的,因为你在大量频繁的读写磁盘文件的时候,或者是进行网络通信的时候,都会跟这个参数有关系对于一个中间件系统而言肯定是不能使用默认值的,如果你采用默认值,很可能在线上会出现如下错误: error: too many open files。

因此通常建议用如下命令修改这个值: echo 'ulimit -n 1000000' >> /etc/profile.


总结:

实大家综合思考一下这几个参数, 会发现到最后要调整的东西,无非都是跟磁盘文件IO、网络通信、内存管理、线程数量有关系的,因为我们的中间件系统在运行的时候无非就是跟这些打交道。

●中间件系统肯定要开启大量的线程(跟vm.max_map_count有关)

●而且要进行大量的网络通信和磁盘IO (跟ulimit有关)

●然后大量的使用内存(跟vm.swappiness和vm.overcommit_memory有关)

所以对OS内核参数的调整,往往也就是围绕跟中间件 系统运行最相关的一东西。


JVM参数调整

-server:这个参数就是说用服务器模式启动,这个没什么可说的,现在一般都是如此。

-Xms8g -Xmx8g -Xmn4g:这个就是很关键的一块参数了,也是重点需要调整的,就是默认的堆大小是8g内存,新生代是4g内存,但是我们的高配物理机是48g内存的,所以这里完全可以给他们翻几倍,比如给堆内存20g,中新生代给10g,甚至可更多-些,当然要留一些内存给操作系统来用。

-XX:+UseG1GC -XX:G1HeapRegionSize=16m:这几个参数也是至关重要的,这是选用了G1垃圾回收器来做分代回收,对新生代和老年代都是用G1来回收这里把G1的region大小设置为了16m,这个因为机器内存比较多,所以region大小可以调大-些给到16m, 不然用2m的region, 会

导致region数量过多的。

-XX:G1 ReservePercent=25:这个参数是说,在G1管理的老年代里预留25%的空闲内存,保证新生代对象晋升到老年代的时候有足够空间,避免老年代内存都满了,新生代有对象要进入老年代没有充足内存了默认值是10%,略微偏少,这里RocketMQ给调大了一些。

-XX:InitiatingHeapOccupancyPercent=30:这个参数是说,当堆内存的使用率达到30%之后就会自动启动G1的并发垃圾回收,开始尝试回收一些垃圾对象,默认值是45%,这里调低了一些,也就是提高了GC的频率,但是避免了垃圾对象过多, 一次垃圾回收耗时过长的问题。

-XX:SoftRefLRUPolicyMSPerMB=0:这个参数不要设置为0,避免频繁回收-些软引|用的Class对象,这里可以调整为比如1000。

-verbose:gc -Xloggc:/dev/shm/mq_ gc _%p.log -XX:+ PrintGCDetails -XX: + PrintGCDateStamps -XX: + PrintGCApplicationStoppedTime -XX:+ PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -

XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m:这一堆参数都是控制GC日志打印输出的, 确定了gc日志文件的地址,要打印哪些详细信息,然后控制每个gc日志文件的大小是30m,最多保留5个gc日志文件。

-XX:-OmitStackTraceInFastThrow:这个参数是说,有时候JVM会抛弃-些异常堆栈信息, 因此这个参数设置之后,就是禁用这个特性,要把完整的异常堆栈信息打印出来。

-XX:+ AlwaysPreTouch:这个参数的意思是我们刚开始指定JVM用多少内存,不会真正分配给他,会在实际需要使用的时候再分配给他。

所以使用这个参数之后,就是强制让VM启动的时候直接分配我们指定的内存,不要等到使用内存的时候再分配。

-XX:MaxDirectMemorySize= 15g:这是说RocketMQ里大用了NIO中的direct buffer,这里限定了direct buffer最多申请多少,如果你机器内存比较大,可以适当调大这个值。

-XX:-UseLargePages -XX:-UseBiasedLocking:这两个参数的意思是禁用大内存页和偏向锁。


RocketMQ核心参数调整

sendMessageThreadPoolNums

RocketMQ内部用来发送消息的线程池的线程数量,默认是16。这个参数可以根据你的机器的CPU核数进行适当增加。

参考来源:儒猿技术窝--从零开始带你成为消息中间件实战高手

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容