MySQL:内存不足/MariaDB

MySQL:内存不足/MariaDB,mysql,wordpress,debian,innodb,mariadb,Mysql,Wordpress,Debian,Innodb,Mariadb,你好,亲爱的斯塔克斯 我的Debian 8服务器VServer(1GB Ram,CPU 2x1GHz)共享有问题MariaDB。 我安装了三个需要继续运行的Wordpress,还有一些其他网站。我不知道问题是什么,这种情况每隔几天就会发生一次,或者当一群客户同时浏览Wordpress网站时 我得到一个错误,Wordpress无法连接到数据库(因为数据库崩溃) 我尝试了很多不同的方法,一种是禁用性能模式(=off),这不会改变任何事情。我还将MySQL更改为Mixed,这解决了一些警告(不确定是否

你好,亲爱的斯塔克斯

我的Debian 8服务器VServer(1GB Ram,CPU 2x1GHz)共享有问题MariaDB。 我安装了三个需要继续运行的Wordpress,还有一些其他网站。我不知道问题是什么,这种情况每隔几天就会发生一次,或者当一群客户同时浏览Wordpress网站时

我得到一个错误,Wordpress无法连接到数据库(因为数据库崩溃)

我尝试了很多不同的方法,一种是禁用性能模式(=off),这不会改变任何事情。我还将MySQL更改为Mixed,这解决了一些警告(不确定是否存在脏补丁)。 Wordpress无法通过自动修复数据库来解决问题(未发现错误)

提前感谢!:)

my.cnf的一部分:


期刊


现在1GB已经不多了。当然,您仍然可以在1G主机上运行MariaDB 10.1,但需要对配置文件进行一些调整

下面是一些如何在MariaDB服务器启动时减少内存使用的示例

请注意,在客户端连接和查询执行时,有不同的参数会影响内存使用,但是错误日志表明您在启动时遇到了问题

还请注意,并非所有这些变量都可以一次减少,也并非总是可以选择最小值。没有人能给出所有的建议,这取决于你使用的引擎以及你如何使用它们。检查您打算调整的每个变量的文档,以了解其确切影响

最后,由于您没有引用整个配置,因此可能有一些其他选项实际增加了内存使用。以下注释基于硬编码的默认值

以下是我的10.1.21服务器,在新的干净datadir上以所有默认值(无配置选项)启动:

所有默认选项

  VIRT    RES    SHR COMMAND
747040  95108  14756 mysqld
它是下面所有内存使用示例的基线

innodb\u缓冲区\u池\u大小 10.1中的默认值为128M。你把它增加到了2.56亿,因此损失了1.28亿美元:

所有默认选项+
--innodb\u buffer\u pool\u size=256M

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
相反,您可以将其减小,最小可能值为5M:

所有默认选项+
--innodb\u buffer\u pool\u size=5M

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
aria_页面缓存_缓冲区_大小 默认值为128M,最小值为128K:

所有默认选项+
--aria页面缓存缓冲区大小=128K

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
按键缓冲区大小 默认值为128M,根据文档,最小值为8(尽管在我的机器上,4K以下的所有值都调整为0):

所有默认选项+
--key\u buffer\u size=8

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
innodb\u日志\u缓冲区\u大小 默认值为16M,最小值为256K:

所有默认选项+
--innodb\u log\u buffer\u size=256K

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
二进制日志 您提到您“将MySQL更改为Mixed”,它允许删除一些警告。显然,这意味着您设置了
binlog\u format=mixed
,并且启用了
log bin
(默认情况下禁用)。将二进制日志格式调整为
MIXED
很好,但二进制日志本身使用一些内存,即使在默认配置中也是如此:

所有默认选项+
--log bin

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
如果您不需要它,您可以禁用它,它将为您节省一点内存,并将提高性能

整个InnoDB 在不太可能的情况下,您根本不需要InnoDB,您可以禁用它,它将为您节省大量内存:

所有默认选项+
--跳过innodb--默认存储引擎=MyISAM

    VIRT    RES    SHR COMMAND
  888608 104856  14820 mysqld
    VIRT    RES    SHR COMMAND
  606752  85928  14848 mysqld
    VIRT    RES    SHR COMMAND
  611872  90004  14932 mysqld
    VIRT    RES    SHR COMMAND
  611872  71264  14748 mysqld
    VIRT    RES    SHR COMMAND
  718368  74980  14756 mysqld
    VIRT    RES    SHR COMMAND
  747312  95240  14820 mysqld
    VIRT    RES    SHR COMMAND
  383948  55696  12668 mysqld
现在一起 因此,假设您同时执行所有这些操作(您应该而不是!),您可以显著减少初始内存分配:

所有默认选项+
——aria pagecache buffer size=128K——innodb\u log\u buffer\u size=256K——key\u buffer\u size=8——innodb\u buffer\u pool\u size=5M——跳过innodb——默认存储引擎=MyISAM


我现在首先添加了一个1GB交换文件,我将看看这有什么帮助。之后,我会做这些改变,如果结果仍然崩溃的话。我在believ已经安装了一个交换驱动器/文件-一定是在其他服务器上。谢谢,有一个交换文件应该可以让它工作,但是。。。MySQL在交换时性能受到严重影响。考虑把任何看起来像“大小”的设置切成两半。这还不够。我现在设置了上面提到的一些设置,并将了解其工作原理。如果它再次崩溃,我会再次回来;)最好设置一个监视器(一些简单的东西,甚至只是
top
),以查看动态——服务器启动时的消耗量与服务器死亡前的消耗量。也许你遇到了漏洞。