Jus*_*inP 3 performance exim ramdisk tmpfs queue
我有一个电子邮件服务器,它是消息传递应用程序的一部分,它会看到很多吞吐量。我想在 RAMdisk 上挂载 Exim 的消息队列以最大化性能;吞吐速度是最重要的,而不是在崩溃或系统重启的情况下团结一致。我发现很多信息都说在 RAMdisk 上安装消息队列会有很大帮助,但没有关于如何执行此操作的真实信息。
我很确定消息队列默认在 /var/spool/exim 中,并且我可以使用 tmpfs 来挂载 RAMdisk。我将如何在启动时安装 RAMdisk,并让 Exim 的消息队列使用它?
即挂载这个 RAMdisk 的命令是什么,我应该把这个命令放在哪里,以便它在机器启动时(但在 Exim 启动之前)执行?
谢谢 :)
split_spool_directory在配置文件中设置,Exim 将通过将消息拆分为子目录而不是单个假脱机目录来更有效地处理大型队列。许多 linux 发行版已经有一些预配置但未使用的 ramdisk。运行以下命令以列出您当前的 ramdisk:
ls /dev/ram*
Run Code Online (Sandbox Code Playgroud)
要查看大小分配,请以fdisk标准方式使用:(X您的 ramdisk 编号在哪里)
fdisk -l /dev/ramX
Run Code Online (Sandbox Code Playgroud)
您可能希望增加默认空间分配。由于 ramdisk 大小由内核控制,因此您需要设置内核选项来增加分配的空间。如果您的引导加载程序是 GRUB,您可以编辑该grub.conf文件并添加ramdisk_size内核选项。您的 GRUB 配置文件应如下所示:(在本例中,我们将 ramdisk 大小设置为 256MB)
default 0
timeout 5
hiddenmenu
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title=Gentoo Gateway Server
root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 ramdisk_size=256000
Run Code Online (Sandbox Code Playgroud)
重新启动后,您的新 ramdisk 应反映更新的空间分配。由于使用日志文件系统格式化 ramdisk 毫无意义,我们将只使用 ext2:
mke2fs -m 0 /dev/ram0
Run Code Online (Sandbox Code Playgroud)
该-m 0选项阻止 mke2fs 在文件系统上为 root 用户保留任何空间。您现在可以为 ramdisk 创建一个挂载点,挂载它,然后开始使用它。
mkdir /mnt/ramdisk
mount /dev/ram0 /mnt/ramdisk
df -h /dev/ram0
Run Code Online (Sandbox Code Playgroud)
此外,请确保您在挂载点上设置了正确的权限(将用户名和组名替换为您系统的正确组和用户):
chown -R username:groupname /mnt/ramdisk
Run Code Online (Sandbox Code Playgroud)
您现在可以像使用标准硬盘分区一样使用此分区。请注意,如果您卸载分区,您的数据不会丢失,RAM 也不会被释放,因为内核会永久分配所需的空间,直到重新启动。
要自动执行此过程,请将以下内容添加到您的/etc/rc.local脚本中:
/sbin/mke2fs -q -m 0 /dev/ram0
/bin/mount /dev/ram0 /mnt/ramdisk
/bin/chown username:groupname /mnt/ramdisk
/bin/chmod 0750 /mnt/ramdisk
Run Code Online (Sandbox Code Playgroud)
您可以执行绑定安装,以便 Exim 将继续写入其标准假脱机目录。为此,请将以下行添加到您的/etc/fstab文件中:
/mnt/ramdisk /var/spool/exim none bind 0 0
Run Code Online (Sandbox Code Playgroud)
或者,您可以将 Exim 指向 ramdisk 挂载点。为此,您需要在exim.conf文件中设置以下内容:
spool_directory = /mnt/ramdisk
Run Code Online (Sandbox Code Playgroud)
显然,您只会执行上述任一操作,而不是两者都执行。
不要使用 ramdisk,而是使用 tmpfs,Linux 内核 2.4 及更高版本支持。使用 tmpfs 的好处是内存可以动态分配,使其成为比 ramdisks 更灵活的解决方案。此外,如果您的 tmpfs 分区空间不足,内核将自动开始将数据分页到您的硬盘,而 ramdisk 解决方案只会导致 Exim 停止处理消息并崩溃。
使用 tmpfs,您无需执行上述 ramdisk 解决方案所需的任何步骤。成功的 tmpfs 配置需要以下步骤:
创建挂载点并设置正确的权限:
mkdir /mnt/tmpfs
chown -R username:groupname /mnt/tmpfs
Run Code Online (Sandbox Code Playgroud)
接下来,打开您的/etc/fstab文件并设置要在启动时创建和挂载的 tmpfs 分区:
#<fs> <mountpoint> <type> <opts> <dump/pass>
tmpfs /mnt/tmpfs tmpfs size=1G,nr_inodes=10k,mode=0700 0 0
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有 10'000 个 inode 的 1GB tmpfs 分区。exim 配置与创建 ramdisk 时相同 - 告诉 Exim 新假脱机目录的位置位于/mnt/tmpfs或将现有假脱机目录绑定到/mnt/tmpfs挂载点。或者,您可以从一开始就将 tmpfs 分区挂载到 Exim 现有的 spool 目录 - 因此,不要对/etc/fstab文件进行上述更改,而是使用以下行:
#<fs> <mountpoint> <type> <opts> <dump/pass>
tmpfs /var/spool/exim tmpfs size=1G,nr_inodes=10k,mode=0700 0 0
Run Code Online (Sandbox Code Playgroud)
这个站点有一篇很好的文章解释了 tmpfs 和 ramdisk,以及它们之间的区别。
| 归档时间: |
|
| 查看次数: |
3817 次 |
| 最近记录: |