Abaixo está o e-mail que enviei aos membros no host3 e host5. Na sua maioria, isto só se aplica aos membros mais antigos - membros que foram destacados antes de eu ter tido a oportunidade de actualizar os sistemas de ficheiros modelo. Não poderia fazer mal dar uma vista de olhos ao seu cron times. Remover, ou pelo menos mover o tempo de cron actualizadob de diário para semanal, ajudaria.
——
Caro Membro Linode,
Num esforço para reduzir a carga de E/S do disco no seu servidor anfitrião, eu peço que você
execute o seguinte comando (como root) para a sua distribuição:
Debian
mv /etc/cron.daily/find /etc/cron.weekly/
RedHat
mv /etc/cron.diário/slocate.cron /etc/cron.semanal/
Gentoo
mv /etc/cron.diário/slocate /etc/cron.semanal/
Mandrágora:
mv /etc/cron.diário/slocate.cron /etc/cron.semanal/
Slackware
mv /etc/cron.diário/slocate /etc/cron.semanal/
Fedora
Nenhuma alteração necessária
Isto move o trabalho "actualizadob" de correr diariamente para apenas correr semanalmente. O
O comando "updatedb" re-indexa todo o seu sistema de ficheiros, para que possa encontrar ficheiros
rapidamente utilizando o comando "localizar (nome do ficheiro)". Se não usar frequentemente o comando
comando "localizar", movendo a actualização do índice para semanal (ou apagando o cron job
completamente) ajudará a reduzir a carga durante as primeiras horas da manhã. Actualmente,
o hospedeiro abranda para um rastejamento enquanto muitos Linodes tentam reindexar os seus
sistemas de arquivo.
Isto não é tanto um problema com os anfitriões mais recentes, uma vez que modifiquei o modelo
sistemas de arquivos e as pessoas já foram implantados com esses arquivos movidos.
Se você fizer a mudança e não reclamar sobre arquivo não encontrado (indicando
já foi movido), por favor, dispare um e-mail e avise-me.
Obrigado,
-Chris
Comentários (3)
[quote:90ec82635e=”caker”]Below is the email I sent to members on host3 and host5. Mostly this only applies to early members — member’s that deployed before I had a chance to update the template filesystems. It couldn’t hurt to take a look at your cron times. Removing, or at least moving the updatedb cron time from daily to weekly would help.
[/quote]
I would like to add that if you do not move your daily cron jobs to weekly as mentioned, or delete them, that you at least “randomize” the times that your daily cron jobs run. This is probably the best way to solve this problem as it allows you to install services as normal and not worry about whether they put cron jobs in daily or weekly, and yet help prevent huge loads on the Linode host at specific times. To do this, simply edit your /etc/crontab file, under the # run-parts entry.
Here is an example section from an /etc/crontab file:
[code]
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
[/code]
These indicate that cron.hourly jobs run at 1 minute past the hour, cron.daily jobs run at 4:02 am every day, cron.weekly jobs run at 4:22 am every Monday, and cron.monthly jobs run at 4:42 am on the first day of each month.
An example random change would be:
[code]
# run-parts
16 * * * * root run-parts /etc/cron.hourly
25 6 * * * root run-parts /etc/cron.daily
45 6 * * 2 root run-parts /etc/cron.weekly
55 6 3 * * root run-parts /etc/cron.monthly
[/code]
This moves the hourly jobs to the 16th minute of every hour, dailies to 6:25 am, weeklies to Wednesday at 6:45 am, and monthlies to 6:55 on the third day of each month.
If we all stagger our times randomly like this, we can go a long way towards eliminating some common performance bottlenecks on Linodes.
Thanks!
In addition to ‘randomising’ start times, I schedule maintenance cron jobs after hours or on weekends, 😀
Just a reminder that each time you upgrade the package containing the “find” utility (in Debian, it’s “findutil”), the cron job will likely be unpacked into /etc/cron.daily again, while the old cron job you have moved into /etc/cron.weekly will be left there as an orphan.
So remember to move /etc/cron.daily/(find|slocate(.cron)?) back to /etc/cron.weekly (overwriting the orphan) after each upgrade of the parent package.