有时我们可能需要设置自定义的每个进程限制或者属性。
可以修补 mysqld_safe,但使用包装脚本更容易实现。
在早期版本中,我们可以使用 mysqld_safe 的 mysqld= 选项来指定包装脚本的路径,但从 5.5.52. 5.6.33 和 5.7.15 开始,此功能已被删除。
目前最简单的解决方案是重命名现有的 mysqld(例如重命名为 mysqld.bin),并将名为 mysqld 的脚本放在同一目录中。
- 将现有的“mysqld”二进制文件重命名为“mysqld.bin”
- 在其位置创建一个名为“mysqld”的脚本,该脚本设置我们需要的任何每个进程的限制或者属性,然后调用“mysqld.bin”
- 设置“mysqld”脚本的所有权和权限
以下是一些示例包装脚本:
- 要增加允许的线程数,请使用“ulimit -u”:
#!/bin/sh DIR=$(dirname "#!/bin/sh DIR=$(dirname "") ulimit -u 10000 exec "$DIR/mysqld.bin" "$@"#!/bin/sh DIR=$(dirname "") ulimit -c unlimited exec "$DIR/mysqld.bin" "$@"#!/bin/sh DIR=$(dirname "") echo "-1000" > /proc/self/oom_score_adj exec "$DIR/mysqld.bin" "$@"#!/bin/sh DIR=$(dirname "") exec /usr/bin/numactl --interleave all "$DIR/mysqld.bin" "$@"#!/bin/sh DIR=$(dirname "") exec /bin/taskset -c 0-7,8-11 "$DIR/mysqld.bin" "$@"#!/bin/sh DIR=$(DIRNAME "##代码##") LIB=/path/to/your/tcmalloc.so export LD_LIBRARY_PATH=$(dirname "$LIB"):$LD_LIBRARY_PATH export LD_PRELOAD="$LIB" exec "$DIR/mysqld.bin" "$@"") export AUTHENTICATION_PAM_LOG=1 exec "$DIR/mysqld.bin" "$@"
- 要设置核心文件大小限制,请使用“ulimit -c”:
3.为了防止OOM-killer中止mysqld,设置oom_score_adj:
##代码##- 要启用 NUMA 交错内存分配,请使用 numactl :
- 要设置 CPU 亲和性,请使用任务集:
- 在错误日志中记录PAM认证调试信息:
- 加载替代 malloc 库,例如 tcmalloc :
日期:2020-09-17 00:11:50 来源:oir作者:oir