I had to make a couple of changes before the CPU usage dropped. I am running Zimbra in a VM for a handful of email accounts so the CPU spikes were disappointing since my other VMs basically idle all day.
1) As commented on above the zmprov is a java process which taxes the CPU. This will bring down the CPU usage, however if you change the values down the road you will need to edit zmlogprocess to reflect them.
Code:
vim /opt/zimbra/libexec/zmlogprocess
#my $rawRetention = `${zimbra_home}/bin/zmprov -l gacf | egrep '^zimbraLogRawLifetime' | sed -e 's/zimbraLogRawLifetime: //'`;
my $rawRetention = "31d";
#my $summaryRetention = `${zimbra_home}/bin/zmprov -l gacf | egrep '^zimbraLogSummaryLifetime' | sed -e 's/zimbraLogSummaryLifetime: //'
my $summaryRetention = "730d"; 2) zmstatuslog is a java process that prints the status into the log file. From what I understand the admin gui grabs this info from the log file to show the current service status. I don't see the point to have this run every two minutes and changed it to five minutes.
original
Code:
su - zimbra; crontab -e
*/2 * * * * /opt/zimbra/libexec/zmstatuslog
changed
Code:
su - zimbra; crontab -e
*/5 * * * * /opt/zimbra/libexec/zmstatuslog
3) zmmtaconfig has a watchdog process that will run every sixty seconds and restart services if they have crashed. I haven't had the services crash so I changed the value to five minutes. If you care about uptime should a service crash you shouldn't change this. However depending on when the service crashed it could be restarted sooner than five minutes.
original
Code:
su - zimbra
zmlocalconfig -e zmmtaconfig_interval=""
changed
Code:
su - zimbra
zmlocalconfig -e zmmtaconfig_interval=300