[ClusterLabs Developers] performance problems with ocf resource nfsserver script
Eberhard Kuemmerle
E.Kuemmerle at fz-juelich.de
Wed Sep 11 10:22:43 UTC 2019
Hi,
I use pacemaker with a some years old hardware.
In combination with an rsync backup, I had nfsserver monitoring timeouts that resulted in stonith fencing events...
So I tested the ocf resource nfsserver script and found, that even in an idle situation (without rsync or other heavy load),
'nfsserver monitor' was running for more than 10 seconds.
I found two critical actions in the script:
- systemctl status nfs-server (which also calls journalctl)
- systemctl list-unit-files
So I modified the script and replaced
systemctl $cmd $svc
by
systemctl -n0 $cmd $svc
in nfs_exec() to suppress the journalctl call
and
systemctl list-unit-files
by
systemctl list-unit-files 'nfs-*'
and
systemctl list-unit-files 'rpc-*'
That reduced the runtime for 'nfsserver monitor' to less than 0.2 secons!
So I strongly recommend to integrate that modification in your repository.
Best regards,
Eberhard
Here are the changes in detail:
diff -Naur /usr/lib/ocf/resource.d/heartbeat/nfsserver.orig /usr/lib/ocf/resource.d/heartbeat/nfsserver.mod
--- /usr/lib/ocf/resource.d/heartbeat/nfsserver.orig 2019-07-22 10:12:27.000000000 +0200
+++ /usr/lib/ocf/resource.d/heartbeat/nfsserver.mod 2019-09-11 09:05:25.985824119 +0200
@@ -233,24 +233,25 @@
return 0
fi
- ##
- # Attempt systemd (with nfs-lock.service).
- ##
if which systemctl > /dev/null 2>&1; then
- if systemctl list-unit-files | grep nfs-server > /dev/null && systemctl list-unit-files | grep nfs-lock > /dev/null; then
- EXEC_MODE=2
- # when using systemd, the nfs-lock service file handles nfsv3 locking daemons for us.
- return 0
- fi
- fi
+ if systemctl list-unit-files 'nfs-*' | grep nfs-server > /dev/null; then
- ##
- # Attempt systemd (with rpc-statd.service).
- ##
- if which systemctl > /dev/null 2>&1; then
- if systemctl list-unit-files | grep nfs-server > /dev/null && systemctl list-unit-files | grep rpc-statd > /dev/null; then
- EXEC_MODE=3
- return 0
+ ##
+ # Attempt systemd (with nfs-lock.service).
+ ##
+ if systemctl list-unit-files 'nfs-*' | grep nfs-lock > /dev/null; then
+ EXEC_MODE=2
+ # when using systemd, the nfs-lock service file handles nfsv3 locking daemons for us.
+ return 0
+ fi
+
+ ##
+ # Attempt systemd (with rpc-statd.service).
+ ##
+ if systemctl list-unit-files 'rpc-*' | grep rpc-statd > /dev/null; then
+ EXEC_MODE=3
+ return 0
+ fi
fi
fi
@@ -272,12 +273,12 @@
2) if ! echo $svc | grep -q "\."; then
svc="${svc}.service"
fi
- systemctl $cmd $svc
+ systemctl -n0 $cmd $svc
;;
3) if ! echo $svc | grep -q "\."; then
svc="${svc}.service"
fi
- systemctl $cmd $svc
+ systemctl -n0 $cmd $svc
;;
esac
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5346 bytes
Desc: S/MIME Cryptographic Signature
URL: <https://lists.clusterlabs.org/pipermail/developers/attachments/20190911/24dd3610/attachment-0002.p7s>
More information about the Developers
mailing list