O crontab está relacionado ao desempenho do servidor?

2

Estou usando o Solaris 10 e estou adicionando muitos cronjobs ao crontab do meu servidor.

Atualmente, tenho 30 cronjobs no meu crontab.

um cronjob leva 8 horas para ser concluído, um outro cron job leva 5 horas para concluí-lo e o restante deles são cronjobs comuns (máximo de 30 minutos)

Como é um servidor de produção, estou preocupado com o desempenho do servidor.

  1. Como eles estão relacionados ao desempenho do meu servidor?
  2. Existe algum limite máximo para o número de cronjobs?
por Balaswamy vaddeman 27.01.2012 / 10:14

2 respostas

7

Resposta curta: Sim.

Resposta mais longa:

  1. Depende de o que os cronjobs fazem e quando eles fazem isso, ou seja, tarefas de computação pesada (degradação de desempenho) são executadas à noite (ou quando ninguém está no escritório, depende do que o servidor é usado para) não ferir (se eles estão acabados antes do horário de expediente, é claro).
  2. Se houver um limite (não tenho certeza), provavelmente está muito além de 30. De qualquer forma, parece um pouco incomum ter muitos cronjobs (alguém me corrija se estiver errado), mas sem mais informações, é impossível dizer se há uma solução melhor.

(Esta é apenas uma primeira aproximação a uma resposta, duvido que possa ser totalmente respondida nesta generalidade.)

Você também pode ler em nice (não tenho certeza se ele existe no Solaris). O Gerenciamento de recursos do Solaris (1) , (2 ) também parece útil, dependendo do tipo de trabalho.

    
por 27.01.2012 / 10:38
1

É claro que as tarefas do cron afetarão o desempenho de alguma forma. Se um cron job leva 8 horas, presumivelmente está fazendo algo grande. Mas o que? Aí reside a questão.

Se você tiver vários trabalhos em segundo plano que competem por recursos, eles levarão mais tempo para serem concluídos. Por exemplo, se você tiver um trabalho de 8 horas e um trabalho de 5 horas separadamente, eles podem levar mais de 13 horas se você executá-los ao mesmo tempo e eles estiverem lutando pelo mesmo recurso (disco I / O, largura de banda de rede, RAM,…). Por outro lado, se eles usam recursos diferentes (por exemplo, um está ligado à CPU, o outro é ligado ao disco), é possível que ambos sejam terminados às 8h, se você iniciá-los à meia-noite.

Portanto, a regra para dividir trabalhos intensivos é alocar recursos amplamente. Descubra o que cada trabalho precisa (E / S de disco, largura de banda de rede, RAM, CPU, etc.) e, em seguida, calcule um cronograma para que não haja contenção de recursos. Por exemplo, se você tiver 4 GB de RAM e o trabalho 1 exigir 2 GB, os trabalhos 2 e 3 exigirão 2 GB cada, e a operação normal do servidor exigirá 2 GB; verifique se o trabalho 1 não é executado ao mesmo tempo que os trabalhos 2 e # 3, mas não há problema em executar # 2 e # 3 simultaneamente. Geralmente, você deve executar um único trabalho intensivo de disco por vez, a menos que tenha trabalhos diferentes que atingem conjuntos de discos diferentes. A CPU pode ser compartilhada sem sobrecarga, apenas certifique-se de ter alguma esquerda para operação front-end ( nice pode ajudar lá).

    
por 28.01.2012 / 15:44

Tags