Commit 972043fd1b7f0c4b5e37cce79a84e99a74035535
1 parent
87b31054
Exists in
master
and in
4 other branches
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 | ... | ... |