ionice todo processo de imap automaticamente

1

Eu quero ionizar um processo em sua inicialização.

Em nosso ambiente de hospedagem, usamos servidores Paralells Confixx antigos. (Sim, eu sei, o Confixx está desatualizado, mas essa não é a questão).

Usamos courier para emails e, às vezes, acontece que o processo /usr/bin/imap Maildir consome toda a E / S, o que também causa alta carga de CPU. Nós sempre manualmente ionizado ( ionice –c 3 –p [PID] ) o processo e o I / O caiu. Qual é a melhor maneira de ionizar automaticamente todo processo de imap? Não tenho muita experiência no servidor de correio postal.

    
por Simon Sutter 24.05.2018 / 10:19

3 respostas

0

ionice no processo principal parece não funcionar, então eu modifiquei o initscript do "courier-imap" e "courier-imap-ssl" e parece funcionar:

case "$1" in
    start)
    if [ "$START" = "yes" ]; then
            log_daemon_msg "Starting $PROGRAM" "$DAEMON"
            umask $IMAP_UMASK
            ulimit -v $IMAP_ULIMITD
            /usr/bin/env - /bin/sh -c " set -a; \
            bindir=${bindir}; \
            . ${sysconfdir}/imapd; \
            if [ "$SSLCONFIG" ]; then . ${sysconfdir}/imapd-ssl; fi; \
            IMAP_STARTTLS=$IMAPDSTARTTLS ; export IMAP_STARTTLS ; \
            PROXY_HOSTNAME=$PROXY_HOSTNAME;
            TLS_PROTOCOL=$TLS_STARTTLS_PROTOCOL ; \

            ionice -c3 /usr/sbin/courierlogger -pid=$PIDFILE -start $LOGGEROPTS \

            $TCPD -address=$ADDRESS \
                    -maxprocs=$MAXDAEMONS -maxperip=$MAXPERIP \
                    $TCPDOPTS \
                    $PORT ${libexecdir}/courier/imaplogin \
                            ${bindir}/imapd $MAILDIRPATH"
            log_end_msg 0
    fi

Se alguém tiver sugestões de melhoria, informe-me.

    
por 25.05.2018 / 10:32
0

Basta executar ionice no processo principal do IMAP. A configuração é herdada pelos processos filhos.

Talvez também ajude a executar find /path -printf"" a cada minuto em todos os diretórios de e-mail para manter os metadados no cache de páginas (a menos que sejam dados demais e você precise de mais cache para outras coisas).

    
por 24.05.2018 / 10:44
0

Como outra solução, você pode colocar o processo courier para separar a hierarquia cgroup e especificar parâmetros (largura de banda IO no seu caso) para controlador de E / S de bloco .

Um exemplo simples e simples que eu descobri pode ser obtido de este link .

Além disso, você pode especificar outros parâmetros de controladores, como cpuact, memory, net_prio. Muito mais você pode encontrar em Documentação do Kernel Linux .

    
por 24.05.2018 / 10:57