desempenho de postfix com listas no main.cf

6

Para definir uma lista de itens para atribuir a muitas opções diferentes no postfix, você pode usar uma lista separada por vírgulas como esta:

relay_domains = example.com,example.net,example.org

ou um mapa hash como este:

relay_domains = hash:/etc/postfix/relay_domains

e, em seguida, use o postmap para converter esse arquivo de chave, itens de valor em um arquivo bdb.

Minha pergunta é: existe alguma razão de desempenho para usar o mapa de hash em vez de apenas especificar a lista?

    
por Val 27.02.2015 / 00:10

1 resposta

5

Eu não tenho dados ou métricas para decidir se o desempenho é importante nos dois casos. Vou tentar explicar o processo de fundo que envolve esses dois casos.

Quando o daemon postfix estava em execução, há pouca diferença entre os dois porque:

  • Ao usar main.cf , o postfix analisa o arquivo de configuração, salva-o na memória e não verifica o arquivo novamente até que o postfix seja reiniciado ou o administrador emite o comando postfix reload .
  • Ao usar a tabela de hash, o postfix analisa a tabela, salva-a na memória E verifica periodicamente se o arquivo foi alterado. Se o banco de dados foi alterado, o postfix será encerrado antes de manipular a próxima solicitação do cliente, para que um novo processo possa ser inicializado com o novo banco de dados. fonte

Agora, se você quiser alterar a lista,

  • Depois de alterar main.cf , você deve invocar postfix reload . Isso forçará o daemon mestre a reler o arquivo de configuração e encerrar o processo filho para que ele possa obter uma nova configuração. fonte
  • Depois de alterar a tabela de hash, não é necessário invocar postfix reload .

Ainda não entendi a diferença entre (1) reiniciar o processo filho invocando manualmente postfix reload e (2) a reinicialização do processo filho acionado pela tabela hash foi modificada.

Aqui temos algum conhecimento depois de ler a página de manuais de postfix , especialmente no Processo Daemons seção. Isso me ajuda a entender a diferença entre (1) reiniciar o processo filho invocando manualmente postfix reload e (2) a reinicialização do processo filho acionado pela tabela hash foi modificada.

O postfix tem o processo mestre chamado mestre . É invocado pela primeira vez e serve como programa 'mestre'. Ele invocou outro daemon como smtpd, qmgr, reescrita trivial sob demanda.

Existem quatro tipos de daemons postfix

  1. O daemon que não morrerá, por isso não selecionará automaticamente as alterações para main.cf. Invocar postfix reload depois de uma alteração na configuração fará com que o processo o re-leia. Isso inclui: mestre .
  2. O daemon que se tornou um processo persistente, por isso não selecionará automaticamente as alterações para main.cf. Invocar postfix reload depois de uma alteração na configuração fará com que o processo o re-leia. Isso inclui: qmgr , tlsmgr , verifique .
  3. O processo de longa duração que pode ser executado por intervalo de uma hora ou várias horas. Chamar postfix reload depois de uma alteração na configuração acelerará a alteração da configuração. Isso inclui: reescrita trivial , coleta , post-screen , proxymap
  4. O processo de execução curta que é executado apenas por um período de tempo limitado. Invocar postfix reload é desnecessário porque o processo relê main.cf ao executar novamente. Isso inclui smtp , smtpd , local e outros processos além de três categorias acima.

Se você estiver usando main.cf para armazenar as listas, mas não invocar postfix reload ,

  • Daemons categoria 4 irá pegá-lo imediatamente após o processo de revitalização por causa de sua curta idade.
  • Daemons categoria 3 precisam de algum tempo para obter o efeito
  • As daemons de categoria 1 e 2 nunca relêem main.cf até você chamar postfix reload :

Quando você estiver usando a tabela de hash para armazenar as listas e você postmap -ed o arquivo, então

  • A categoria Daemons 2,3,4 detectará as alterações no arquivo. Portanto, não há necessidade de recarregar o postfix.
  • A categoria 1 do daemon não possui valor de parâmetro do tipo hash. Então, não tem efeito para mestre daemon.

Conclusão

Caso contrário, parece que a diferença de desempenho entre dois casos acima foi pequena. Se você raramente mudar a tabela, a diferença pode ser negligenciada. A exceção é que, se você fizer postfix reload ou alterar a tabela de hash, isso será uma preocupação de desempenho em qmgr process. Veja aqui e aqui

Mais informações: Leia-me do Postfix Performance

    
por 27.02.2015 / 03:41