所以我认为我真的搞砸了mariadb的配置文件。我使用apache2和mysql的专用服务器。我不知道服务器响应时间是由mysql响应查询花了太长时间还是代码本身引起的。我已经尝试了一些配置生成器,但我觉得它们不起作用。以下是专用服务器规范:
std::abort
malloc
答案 0 :(得分:0)
请注意,如果您多次指定选项,则该选项的 last 设置只会生效。你有不少重复,这只会导致混淆哪个值真正起作用。
我建议你做以下事情:
[mysqld]
部分中的行)。我注意到你有:
innodb-buffer-pool-size = 26G
这是32G RAM的81%。假设缓冲池使用至少10%的额外,所以它真的使用28.6G。因此,服务器上的所有其他RAM需求只有3.4G,包括MySQL,Apache,其他进程和操作系统本身。
除了缓冲池之外,MySQL还有其他RAM用途,特别是每个连接,并允许最多500个连接。您还可以在同一台服务器上运行Apache,自然任何Apache运行的Web应用程序。他们每个人都会使用RAM,我无法预测多少,因为它完全取决于你的应用程序代码。 Apache允许多个并发请求运行,因此您可能有数十或数百个Web应用程序处理请求的副本。
所以我想知道你是否只是使用了太多的RAM,并强迫服务器使用磁盘上的交换空间。这是任何服务器的性能杀手,因为磁盘(甚至SSD)比RAM慢几个数量级。
您应该使用top
或free
或vmstat
监控内存使用情况。如果您看到RAM耗尽且系统使用swap,您应该尝试减少RAM的分配,或者限制连接数或Apache请求数。您还可以安装更多RAM,甚至将Apache移动到第二个专用服务器。