Kafka调优
这些参数通常与虚拟内存、网络子系统和用来存储日志片段的磁盘挂载点有关,一般配置在/etc/sysctl.conf中。
1.虚拟内存
对于大多数依赖吞吐量的应用程序来说,尽量避免内存交换。内存页和磁盘之间的交换对Kafka各方面的性能都有重大影响。Kafka大量地使用系统页面缓存,如果虚拟内存被交换到磁盘,说明已经没有多余内存可以分配给页面缓存了。
建议把vm.swappiness参数的值设置得小一点,比如1,这样可以防止系统内存不够用的时候,进程突然中止,又可以减少内存交换次数。该参数指明了虚拟机的子系统将如何使用交换分区。设置为1意味着内存使用到100 - 1 = 99的时候进行内存交换。
swappiness的值的大小对如何使用swap分区是有着很大的联系的。
先前,人们建议把vm.swapiness设置为0,
它意味着“除非发生内存益处,否则不要进行内存交换”。
直到Linux内核3.5-rcl版本发布,这个值的意义才发生了变化。
这个变化被一直到其他的发行版本上,包括RedHat企业版内核2.6.32-303。
在发生变化之后,0意味着“在任何情况下都不要发生交换”。
所以现在建议把这个值设置为1。
swappiness=100的时候表示积极的使用swap分区,
并且把内存上的数据及时的搬运到swap空间里面。
2.脏页
内核把读写比较频繁的数据事先放到内存中,以提高读写速度,linux以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核会在合适的时机将数据刷新到磁盘中。这