Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/src/kafka_2.10-0.10.0.1/bin/hs_err_pid5584.log
当时在potainer中运行kafka怎么都不能启动,后来查看日志是内存爆满,需要在docker-compose文件中加入类似的设置,内存设置大点就行了。
environment:
KAFKA_HEAP_OPTS : "-Xmx256M -Xms128M"
解决了这个问题,还会出现一个问题。
kafka | Memory: 4k page, physical 512000k(510008k free), swap 0k(0k free)
当kafka启动的时候如果出现swap为0k的情况,需要修改交换内存,以下内容参考
解决方法:*
先执行下面命令 查看内存是不是还有 最主要的是 看有没有交换空间 swap 如果没有交换空间 或者交换空间比较小 要先安装交换空间 或者增大空间
free -m
1.创建一个大小为500M的swapfile文件:
dd if=/dev/zero of=swapfile bs=1024 count=500000
在root权限下,创建swapfile (有时会遇到dd命令不识别 可能是你安装过一次了 那就先把swapfile删除。)像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的)。/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。
2.将swapfile设置为swap空间(把这个文件变成swap文件)
mkswap swapfile
3.启用交换空间(启用这个swap文件)
swapon swapfile
删除交换空间命令:swapoff swapfile
至此增加交换空间的操作结束了。可以使用free命令查看swap空间大小是否发生变化;
之后再重新部署kafka,就成功了