看来mysqld分配了太多内存作为buff/cache:
free -m
total used free shared buff/cache available
Mem: 990 448 96 36 445 326
Swap: 511 511 0现在我无法启动httpd服务,因为它“未能分叉:无法分配内存”。
我不知道为什么会这样?为什么445M的buff/cache不能被回收并用于httpd?
发布于 2021-03-07 14:59:14
列"buff/ cache“报告用于缓冲区和缓存的内存之和。
缓冲区无法回收,因为内核需要它们来操作。
缓存可以回收,如“可用”列所示。但是,如果存在问题的缓存页是脏的,这将需要写入回收内存的当前内容来交换。但是您的交换空间是满的,“交换”行中的"free“列中的0就是见证。
总之,内存分配失败是因为交换空间已满,或者换句话说,是因为虚拟内存耗尽了。
发布于 2021-03-08 00:34:01
1GB是一台用于运行MySQL的非常小的机器。除了已经讨论过的项目之外,还可以查看my.cnf (或者MySQL的配置文件所在的地方)。查找或设置(在[mysqld]部分),如下所示:
max_connections = 10
innod_buffer_pool_size = 150M
key_buffer_size = 10M
table_open_cache = 50把你的价值观降低到这些;这可能有助于事情的开始。
您使用的是什么版本的MySQL (或MariaDB)?在同一台机器上还有什么其他的应用程序?
https://serverfault.com/questions/1056178
复制相似问题