5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ラクスAdvent Calendar 2020

Day 20

メール送信サーバ負荷試験の為、受信サーバのI/Oを0にした話

Posted at

メール送信サーバの負荷試験を行うに辺り、受信用メールサーバでのメール処理がボトルネックになるとメール送信サーバ側でメールが滞留してしまい性能を正しく測ることができません。

受信用のメールサーバを大量に用意して分散する前に、まずは単体のメールサーバのパフォーマンスを最大限まであげ、解決しない場合に初めて増設を検討します。

負荷テストにおいて受信用メールサーバで注意したいこととして、
大量にメール受信した場合に、I/Oがボトルネックにならないようにする必要がありますので今回はこの問題を解決し、その他Linux Kernelやpostfixのチューニングに関しては割愛致します。

今回受信用メールサーバの構成は以下になります。

OS: CentOS 8.3
Middleware: postfix-3.3.1

1. postfix設定

まずはPostfixのメールスプール処理でI/Oが発生しないように/var/spool/postfixをtmpfsに設置し、メモリ上で処理します。

1-1. tmpfsを/mnt/spoolにマウント

# mkdir /mnt/spool
# mount -t tmpfs -o size=256M tmpfs /mnt/spool

1-2. postfixのメールスプール保存先にtmpfsを指定。

/etc/postfix/main.cf
--- /etc/postfix/main.cf.orig   2020-12-19 16:18:47.264686621 +0900
+++ /etc/postfix/main.cf        2020-12-19 16:19:34.745687975 +0900
@@ -28,7 +28,8 @@
 # See the files in examples/chroot-setup for setting up Postfix chroot
 # environments on different UNIX systems.
 #
-queue_directory = /var/spool/postfix
+#queue_directory = /var/spool/postfix
+queue_directory = /mnt/spool/postfix

 # The command_directory parameter specifies the location of all
 # postXXX commands.

1-3. postfixのPIDファイル保存先を変更します

/usr/lib/systemd/system/postfix.service
--- /usr/lib/systemd/system/postfix.service.orig        2020-12-19 16:25:11.974758482 +0900
+++ /usr/lib/systemd/system/postfix.service     2020-12-19 16:25:36.594764623 +0900
@@ -5,7 +5,7 @@

 [Service]
 Type=forking
-PIDFile=/var/spool/postfix/pid/master.pid
+PIDFile=/mnt/spool/postfix/pid/master.pid
 EnvironmentFile=-/etc/sysconfig/network
 ExecStartPre=-/usr/libexec/postfix/aliasesdb
 ExecStartPre=-/usr/libexec/postfix/chroot-update

1-4. postfixを起動

systemctl daemon-reload
systemctl start postfix

2. メールボックスへのメールを保存しない

次に受信したメールをメールボックスに保存せずに/dev/nullに捨てる専用アカウントを用意します。

2-1. devnull@[DOMAIN]へメールを/dev/nullに捨てる

/etc/aliases
devnull:       /dev/null
## /etc/aliase.dbへ反映
# newaliases

3. メールログをtmpfsに移動

大量のメール受信時にはメールログへの書き込みにも配慮が必要ですので、メールログもtmpfsへ書き込みます。

3-1. rsyslogの設定変更

/etc/rsyslog.conf
--- /etc/rsyslog.conf.orig      2020-09-30 22:19:06.000000000 +0900
+++ /etc/rsyslog.conf   2020-12-19 16:55:48.292582516 +0900
@@ -57,7 +57,7 @@
 authpriv.*                                              /var/log/secure

 # Log all the mail messages in one place.
-mail.*                                                  -/var/log/maillog
+mail.*                                                  -/mnt/logs/maillog


 # Log cron stuff

3-2. メールログを/mnt/logsへ出力

# mkdir /mnt/logs/
# systemctl restart rsyslog
# systemctl restart postfix

設定はここまでで完了。
メール送信サーバからdevnull@[メール受信サーバのドメイン]へメールを送信し、I/Oが発生しないことを確認して下さい。

以上です。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?