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