问题描述:
Mysql异常退出,重启不成功,将部分Tomcat关闭后,正常启动Mysql,目前初步判断是内存不足导致Mysql运行失败。
查看Mysql报错日志
180518 11:19:40 mysqld_safe Number of processes running now: 0
180518 11:19:40 mysqld_safe mysqld restarted
2018-05-18 11:19:41 0 [Note] /usr/mysql/bin/mysqld (mysqld 5.6.33-log) starting as process 26610 ...
2018-05-18 11:19:42 26610 [Note] Plugin 'FEDERATED' is disabled.
2018-05-18 11:19:42 26610 [Note] InnoDB: Using atomics to ref count buffer pool pages
2018-05-18 11:19:42 26610 [Note] InnoDB: The InnoDB memory heap is disabled
2018-05-18 11:19:42 26610 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-05-18 11:19:42 26610 [Note] InnoDB: Memory barrier is not used
2018-05-18 11:19:42 26610 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-05-18 11:19:42 26610 [Note] InnoDB: Using CPU crc32 instructions
2018-05-18 11:19:42 26610 [Note] InnoDB: Initializing buffer pool, size = 256.0M
InnoDB: mmap(274726912 bytes) failed; errno 12
2018-05-18 11:19:42 26610 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2018-05-18 11:19:42 26610 [ERROR] Plugin 'InnoDB' init function returned error.
2018-05-18 11:19:42 26610 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-05-18 11:19:42 26610 [ERROR] Unknown/unsupported storage engine: InnoDB
2018-05-18 11:19:42 26610 [ERROR] Aborting
查看服务器当前内存使用情况
ps
ps命令可以实时的显示各个进程的内存使用情况。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort”选项对进程进行排序,例如按RSS进行排序:
$ ps aux --sort -rss
free
free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
$ free -h
vmstat
vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
$ vmstat -s
发现使用内存最高的是两个JavaWeb项目:
使用命令查看该进程对应的哪些线程在占用cpu:
$ ps -mp 24335 -o THREAD,tid,time
并没有发现有线程站用大量内存的情况,排除程序内部问题。
原因
原因是有两个新部署的Tomcat项目,但没有设置项目的初始化内存大小,例:-Xms -Xmx等相关参数。