我一直想知道这个问题
假设我运行一个服务器,其中托管了 2 个 PHP 站点,它们都需要大量的数据库查询
服务器是多核的,比如说 4 核 8 线程,还有大量的 RAM 备用
经常,特别是在繁忙时段,我观察到在htop
监控工具中数据库进程mariadb
在高 CPU 上运行,而整体服务器负载仍然很低,LA 通常小于 3,并且一半的 CPU 条没有像另一半那样升高,但两个 PHP 站点都变慢了(比如平均 TTFB 从 0.x 秒跳到 1.x 甚至 2.x 秒),我猜是数据库的问题,因为它们都在竞争查询
因此就产生了疑问,因为可以启动多个数据库实例甚至不同的数据库,要么直接安装二进制文件,要么通过 Docker 或 Podman 等间接方式。
所以我想知道,它是否带来任何好处或加快查询和网站速度?
例如 1 个网站与 MariaDB 相关,1 个网站与 MySQL 相关
所以他们不会在同一个数据库上竞争查询
我知道这可能是一个愚蠢的问题,因为我认为像数据库这样的现代软件应该具有完整的多核和多进程支持,但我就是忍不住想知道
答案1
每秒速率 = RPS
针对您的环境考虑的建议。
对于 OS 命令提示符,ulimit -n 24000 并按 Enter 以启用超过 1024 个表/文件句柄
查看此网址 https://glassonionblog.wordpress.com/2013/01/27/increase-ulimit-and-file-descriptors-limit/ 以使此更改在操作系统停止/启动时保持不变。请使用 24000,本示例为您的系统使用 500000。
对于 my.cnf [mysqld] 部分,需要考虑的建议是,
read_rnd_buffer_size=32768 # from more than 1G to reduce handler_read_rnd_next RPS of 3,331
binlog_cache_size=98304 # from 32K to reduce binlog_cache_use RPS of 5
key_buffer_size=16777216 # from 500M+ because less than 1% is in use.
key_cache_division_limit=50 # from 100 for Hot/Warm cache to reduce key_reads RPS of 16,333
请查看个人资料以获取联系信息。可以改进更多全局变量并减少系统开销和内存要求。