上次安装好MySQL之后, 这些天安装了tomcat+nginx, 放了两个小网站跑了. 接着又git+jenkins的持续集成, 把github上的代码可以在jenkins里面自动发布.
现在部署的应用需要连接数据库了, 发现启动MySQL的时候报错了:
> service mysqld start
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
没有任何信息, 找到MySQL的日志文件, 在/var/log/mysqld.log
,打开看到报错信息:
151128 13:57:05 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-11-28T05:57:05.845716Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp serve
r option (see documentation for more details).
2015-11-28T05:57:05.846259Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.9) starting as process 2441 ...
2015-11-28T05:57:05.850492Z 0 [Note] InnoDB: PUNCH HOLE support available
2015-11-28T05:57:05.850515Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-11-28T05:57:05.850521Z 0 [Note] InnoDB: Uses event mutexes
2015-11-28T05:57:05.850529Z 0 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2015-11-28T05:57:05.850534Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-11-28T05:57:05.850539Z 0 [Note] InnoDB: Using Linux native AIO
2015-11-28T05:57:05.850820Z 0 [Note] InnoDB: Number of pools: 1
2015-11-28T05:57:05.850936Z 0 [Note] InnoDB: Using CPU crc32 instructions
2015-11-28T05:57:05.858460Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2015-11-28T05:57:05.858517Z 0 [ERROR] InnoDB: mmap(137428992 bytes) failed; errno 12
2015-11-28T05:57:05.858531Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2015-11-28T05:57:05.858547Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2015-11-28T05:57:05.858558Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2015-11-28T05:57:05.858563Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2015-11-28T05:57:05.858569Z 0 [ERROR] Failed to initialize plugins.
2015-11-28T05:57:05.858575Z 0 [ERROR] Aborting
2015-11-28T05:57:05.858585Z 0 [Note] Binlog end
2015-11-28T05:57:05.858641Z 0 [Note] Shutting down plugin 'CSV'
2015-11-28T05:57:05.858652Z 0 [Note] Shutting down plugin 'MyISAM'
2015-11-28T05:57:05.859081Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
151128 13:57:05 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
可以使用下面命令查看内存占用情况:
简单介绍下top命令:
第一行:
系统当前时刻, 系统运行时间, 当前登陆系统的用户数量, load average为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数.一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
第二行:
total, 为当前系统进程总数;
running, 为当前运行中的进程数;
sleeping, 为当前处于等待状态中的进程数;
stoped, 为被停止的系统进程数;
zombie, 为被复原的进程数;
第三行Cpu(s):
分别表示了 CPU 当前的使用率;
第四行Mem:
分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
第五行Swap:
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
执行top命令后的可进行的操作:
P - 以 CPU 占用率大小的顺序排列进程列表
M - 以内存占用率大小的顺序排列进程列表
N - 以 PID 的大小的顺序排列表示进程列表
l - 关闭或开启第一部分第一行 top 信息的表示
t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
n - 设置在进程列表所显示进程的数量
s - 改变画面更新周期
h - 显示帮助
q - 退出 top
可以根据进程查看进程相关信息占用的内存情况,如下所示:
> pmap -d pid
找到原来是jenkins占用了较大的内存,把它停掉,重新启动mysql成功.
jenkins1.639只安装了github plugins后, 有一个maven的项目, 在什么操作的不进行的情况下, 内存占用到400+M, 我还以为是不是有问题,.
后来查询到官方建议jenkins服务器建议使用1G以上内存