diff --git a/README.md b/README.md index 5f02f62..ebfec2b 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ Para solicitação de acesso aos ambientes, acesse os seguintes endereços: Estes dois componentes são utilizados para gerenciar a fila de recebimento de novos processos de forma assíncrona pelo SEI. **Importante:** É imprescindível que os dois sejam instalados **SOMENTE** no nó de aplicação em que está configurado o CRON de agendamento do SEI. +**Importante:** Deverá ser utilizado o Supervisor a partir da versão 4.0 Exemplo de instalação do German e Supervisor no CentOS: @@ -58,7 +59,7 @@ Estes dois componentes são utilizados para gerenciar a fila de recebimento de n yum install epel-release && yum update # instalação do gearman e supervisord - yum install supervisor gearmand libgearman libgearman-devel php56*-pecl-gearman + yum install supervisor-4.* gearmand libgearman libgearman-devel php56*-pecl-gearman 3. Configuração dos serviços de recebimento de processos no **supervisor** @@ -75,7 +76,8 @@ Estes dois componentes são utilizados para gerenciar a fila de recebimento de n # adicione no final do arquivo [program:sei_processar_pendencias] command=/usr/bin/php -c /etc/php.ini /opt/sei/web/modulos/pen/rn/ProcessarPendenciasRN.php - numprocs=1 + process_name=%(program_name)s_%(process_num)02d + numprocs=4 directory=/opt/sei/web user=apache autostart=true diff --git a/verificar-servicos.sh b/verificar-servicos.sh index 43d1710..c3edd84 100644 --- a/verificar-servicos.sh +++ b/verificar-servicos.sh @@ -3,7 +3,7 @@ PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH -echo "Iniciando execução dos script"; +echo "[$(date +"%Y-%m-%d %T")] Iniciando verificação dos serviços do Gearman e Supervisor... "; GEARMAN=$(ls /etc/init.d | grep -owih gearman.*) if [[ -z $GEARMAN ]]; then echo "ERROR: Instalação do Gearman não pode ser localizada." @@ -16,45 +16,43 @@ else fi fi -echo "Verificando supervisor..."; SUPERVISOR=$(ls /etc/init.d | grep -owih supervisor.*) if [[ -z $SUPERVISOR ]]; then echo "ERROR: Instalação do Supervisor não pode ser localizada." - exit 1 + exit 1; else ps cax | grep -ih supervisor.* > /dev/null if [ $? -ne 0 ]; then - echo "Supervisor: Iniciando serviço de monitoramento dos processos de integração..." + echo "Supervisor: Iniciando serviço de monitoramento dos processos de integração (1)..." /etc/init.d/$SUPERVISOR start; else COMMAND=$(ps -C php -f | grep -o "PendenciasTramiteRN.php"); if [ -z "$COMMAND" ]; then - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..." + echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração (2)..." /etc/init.d/$SUPERVISOR stop; - /etc/init.d/$SUPERVISOR start; + /etc/init.d/$SUPERVISOR start; fi COMMAND=$(ps -C php -f | grep -o "ProcessarPendenciasRN.php"); if [ -z "$COMMAND" ]; then - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..." + echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração (3)..." /etc/init.d/$SUPERVISOR stop; /etc/init.d/$SUPERVISOR start; fi fi fi -echo "Verificando gearman..."; # Garante que comando grep está disponível if ! [ -x "$(command -v grep)" ]; then echo "Error: comando grep não encontrado" >&2 - exit 1 + exit 1; fi # Garante que comando gearadmin está disponível if ! [ -x "$(command -v gearadmin)" ]; then echo "Error: comando geardmin não encontrado" >&2 - exit 1 + exit 1; fi #Verifica se existe alguma fila de processamento parada por causa de um worker bloqueado @@ -71,11 +69,15 @@ fi # isto indica que houve algum bloqueio no Worker que está impedindo-o a processar os trabalhos da fila. # Nesta situação, processos do german precisam ser reiniciados. +#GEARADMIN_STATUS=$(cat /opt/sei/temp/gearadmin_stats) GEARADMIN_STATUS=$(gearadmin --status) -GEARADMIN_REGEX="([1-9]+|[1-9]+[0-9]*)+[[:space:]]+0+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+" +GEARADMIN_BLOCKED_PATTERN="([1-9]+|[1-9]+[0-9]*)+[[:space:]]+0+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+" +GEARADMIN_RUNNING_PATTERN="([1-9]+|[1-9]+[0-9]*)+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+" -if echo "$GEARADMIN_STATUS" | grep -Eq "$GEARADMIN_REGEX"; then - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..." +if (echo "$GEARADMIN_STATUS" | grep -Eq "$GEARADMIN_BLOCKED_PATTERN") && !(echo "$GEARADMIN_STATUS" | grep -Eq "$GEARADMIN_RUNNING_PATTERN") ; then + echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração (4)..." /etc/init.d/$SUPERVISOR stop; /etc/init.d/$SUPERVISOR start; fi + +exit 0 \ No newline at end of file -- libgit2 0.21.2