Commit 972043fd1b7f0c4b5e37cce79a84e99a74035535

Authored by Guilherme Andrade Del Cantoni
1 parent 87b31054

Ajuste em script de monitoramento de bloqueio de workers do gearman

Showing 2 changed files with 19 additions and 15 deletions   Show diff stats
README.md
... ... @@ -51,6 +51,7 @@ Para solicitação de acesso aos ambientes, acesse os seguintes endereços:
51 51 Estes dois componentes são utilizados para gerenciar a fila de recebimento de novos processos de forma assíncrona pelo SEI.
52 52  
53 53 **Importante:** É imprescindível que os dois sejam instalados **SOMENTE** no nó de aplicação em que está configurado o CRON de agendamento do SEI.
  54 +**Importante:** Deverá ser utilizado o Supervisor a partir da versão 4.0
54 55  
55 56 Exemplo de instalação do German e Supervisor no CentOS:
56 57  
... ... @@ -58,7 +59,7 @@ Estes dois componentes são utilizados para gerenciar a fila de recebimento de n
58 59 yum install epel-release && yum update
59 60  
60 61 # instalação do gearman e supervisord
61   - yum install supervisor gearmand libgearman libgearman-devel php56*-pecl-gearman
  62 + yum install supervisor-4.* gearmand libgearman libgearman-devel php56*-pecl-gearman
62 63  
63 64 3. Configuração dos serviços de recebimento de processos no **supervisor**
64 65  
... ... @@ -75,7 +76,8 @@ Estes dois componentes são utilizados para gerenciar a fila de recebimento de n
75 76 # adicione no final do arquivo
76 77 [program:sei_processar_pendencias]
77 78 command=/usr/bin/php -c /etc/php.ini /opt/sei/web/modulos/pen/rn/ProcessarPendenciasRN.php
78   - numprocs=1
  79 + process_name=%(program_name)s_%(process_num)02d
  80 + numprocs=4
79 81 directory=/opt/sei/web
80 82 user=apache
81 83 autostart=true
... ...
verificar-servicos.sh
... ... @@ -3,7 +3,7 @@
3 3 PATH=/usr/bin:/sbin:/bin:/usr/sbin
4 4 export PATH
5 5  
6   -echo "Iniciando execução dos script";
  6 +echo "[$(date +"%Y-%m-%d %T")] Iniciando verificação dos serviços do Gearman e Supervisor... ";
7 7 GEARMAN=$(ls /etc/init.d | grep -owih gearman.*)
8 8 if [[ -z $GEARMAN ]]; then
9 9 echo "ERROR: Instalação do Gearman não pode ser localizada."
... ... @@ -16,45 +16,43 @@ else
16 16 fi
17 17 fi
18 18  
19   -echo "Verificando supervisor...";
20 19 SUPERVISOR=$(ls /etc/init.d | grep -owih supervisor.*)
21 20 if [[ -z $SUPERVISOR ]]; then
22 21 echo "ERROR: Instalação do Supervisor não pode ser localizada."
23   - exit 1
  22 + exit 1;
24 23 else
25 24 ps cax | grep -ih supervisor.* > /dev/null
26 25 if [ $? -ne 0 ]; then
27   - echo "Supervisor: Iniciando serviço de monitoramento dos processos de integração..."
  26 + echo "Supervisor: Iniciando serviço de monitoramento dos processos de integração (1)..."
28 27 /etc/init.d/$SUPERVISOR start;
29 28 else
30 29  
31 30 COMMAND=$(ps -C php -f | grep -o "PendenciasTramiteRN.php");
32 31 if [ -z "$COMMAND" ]; then
33   - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..."
  32 + echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração (2)..."
34 33 /etc/init.d/$SUPERVISOR stop;
35   - /etc/init.d/$SUPERVISOR start;
  34 + /etc/init.d/$SUPERVISOR start;
36 35 fi
37 36  
38 37 COMMAND=$(ps -C php -f | grep -o "ProcessarPendenciasRN.php");
39 38 if [ -z "$COMMAND" ]; then
40   - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..."
  39 + echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração (3)..."
41 40 /etc/init.d/$SUPERVISOR stop;
42 41 /etc/init.d/$SUPERVISOR start;
43 42 fi
44 43 fi
45 44 fi
46 45  
47   -echo "Verificando gearman...";
48 46 # Garante que comando grep está disponível
49 47 if ! [ -x "$(command -v grep)" ]; then
50 48 echo "Error: comando grep não encontrado" >&2
51   - exit 1
  49 + exit 1;
52 50 fi
53 51  
54 52 # Garante que comando gearadmin está disponível
55 53 if ! [ -x "$(command -v gearadmin)" ]; then
56 54 echo "Error: comando geardmin não encontrado" >&2
57   - exit 1
  55 + exit 1;
58 56 fi
59 57  
60 58 #Verifica se existe alguma fila de processamento parada por causa de um worker bloqueado
... ... @@ -71,11 +69,15 @@ fi
71 69 # isto indica que houve algum bloqueio no Worker que está impedindo-o a processar os trabalhos da fila.
72 70 # Nesta situação, processos do german precisam ser reiniciados.
73 71  
  72 +#GEARADMIN_STATUS=$(cat /opt/sei/temp/gearadmin_stats)
74 73 GEARADMIN_STATUS=$(gearadmin --status)
75   -GEARADMIN_REGEX="([1-9]+|[1-9]+[0-9]*)+[[:space:]]+0+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+"
  74 +GEARADMIN_BLOCKED_PATTERN="([1-9]+|[1-9]+[0-9]*)+[[:space:]]+0+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+"
  75 +GEARADMIN_RUNNING_PATTERN="([1-9]+|[1-9]+[0-9]*)+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+[[:space:]]+([1-9]+|[1-9]+[0-9]*)+"
76 76  
77   -if echo "$GEARADMIN_STATUS" | grep -Eq "$GEARADMIN_REGEX"; then
78   - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..."
  77 +if (echo "$GEARADMIN_STATUS" | grep -Eq "$GEARADMIN_BLOCKED_PATTERN") && !(echo "$GEARADMIN_STATUS" | grep -Eq "$GEARADMIN_RUNNING_PATTERN") ; then
  78 + echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração (4)..."
79 79 /etc/init.d/$SUPERVISOR stop;
80 80 /etc/init.d/$SUPERVISOR start;
81 81 fi
  82 +
  83 +exit 0
82 84 \ No newline at end of file
... ...