Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

0

[8.0] Problema invio email / configurazione workers

Avatar
Francesco

Ciao a tutti.
Ho alcuni problemi con un'istanza Odoo 8 dove ho personalizzato il numero di workers.
Nello specifico il mio VPS è dotato di 4 CPU e ho impostato a 9 il numero di workers.

Quando provo ad inviare una mail (es, email fattura), Odoo restituisce un error 502.

Nel log non ho rilevato errori, ho notato solo un timeout su alcuni worker.


Questo è il mio odoo.cfg

[options]
addons_path = /opt/odoo/buildout/parts/odoo/openerp/addons,/opt/odoo/buildout/parts/odoo/addons
admin_passwd = 
auto_reload = False
csv_internal_sep = ,
data_dir = /opt/odoo/.local/share/Odoo
db_host = localhost
db_maxconn = 64
db_name = False
db_password = 
db_port = False
db_template = template1
db_user = odoo
dbfilter = .*
debug_mode = False
demo = {}
email_from = False
geoip_database = /usr/share/GeoIP/GeoLiteCity.dat
import_partial = 
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile = /var/log/odoo/odoo-server.log
logrotate = True
longpolling_port = 8072
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
pg_path = None
pidfile = None
proxy_mode = True
reportgz = False
secure_cert_file = server.cert
secure_pkey_file = server.pkey
server_wide_modules = web,web_kanban
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_user = False
syslog = False
test_commit = False
test_enable = False
test_file = False
test_report_directory = False
timezone = False
translate_modules = ['all']
unaccent = False
without_demo = False
workers = 9
xmlrpc = True
xmlrpc_interface = 
xmlrpc_port = 8069
mentre questa è la mia configurazione Nginx:

upstream odooweb {
    server 127.0.0.1:8069 weight=1 fail_timeout=3600s;
}

upstream odoo8-im {
        server 127.0.0.1:8072 weight=1 fail_timeout=0;
}

server {
    listen      80 default_server;
    charset     utf-8;
    server_name    domain.com;

    add_header Strict-Transport-Security max-age=2592000;

    # necessary for Let's Encrypt
    location /.well-known {
        alias /var/www/html/.well-known;
    }
    location / {
    	rewrite ^ https://$server_name$request_uri? permanent;
    }
}

server {    
    listen      443 default;
    charset     utf-8;
    access_log    /var/log/nginx/odoo-access.log;
    error_log     /var/log/nginx/odoo-error.log;

    keepalive_timeout    60;

    server_name   domain.com;

    # Specifies the maximum accepted body size of a client request,
    # as indicated by the request header Content-Length.
    client_max_body_size 200m;

    # ssl certificate files
    ssl on;    

    # Uncomment 2 lines above for modern browsers compatibility
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

    ssl_prefer_server_ciphers   on;
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

    # increase proxy buffer to handle some OpenERP web requests
    proxy_buffers       16 64k;
    proxy_buffer_size   128k;

    # necessary for Let's Encrypt
    location /.well-known {
        alias /var/www/html/.well-known;
    }

    location / {
        proxy_pass    http://odooweb;

        # force timeouts if the backend dies
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

        # Set timeouts
        proxy_connect_timeout   3600;
        proxy_send_timeout      3600;
        proxy_read_timeout      3600;
        send_timeout            3600;

        # set headers
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

        # Let the OpenERP web service know that we're using HTTPS, otherwise
        # it will generate URL using http:// and not https://
        proxy_set_header X-Forwarded-Proto https;

        # by default, do not forward anything
        proxy_redirect off;
    }

    location /longpolling {
       proxy_pass http://odoo8-im;
    }

    # cache some static data in memory for 60mins.
    # under heavy load this should relieve stress on the OpenERP web interface a bit.
    location ~* /web/static/ {
        proxy_cache_valid 200 60m;
        proxy_buffering    on;
        expires 864000;
        proxy_pass http://odooweb;
    }
} 
(Non ho error 502 sul longpolling)

Grazie per il supporto.
Avatar
Abbandona
3 Risposte
0
Avatar
Sergio Corato
Migliore risposta

Aumenta il timeout dei worker, es.:

```

limit_time_cpu = 600
limit_time_real = 1200

```

Avatar
Abbandona
0
Avatar
Francesco
Migliore risposta

Ciao Sergio,
ho risolto aumentando il timeout.

Grazie mille!

 

Avatar
Abbandona
0
Avatar
Sergio Corato
Migliore risposta

Ciao Francesco,

prova a postare il log dell'errore, può essere utile (non che mi sia mai capitato).

Avatar
Abbandona
0
Avatar
Francesco
Migliore risposta

Ciao Sergio,
ecco l'ultima parte del log prima di ricevere il classico messaggio di warning con error 502 (purtroppo è un ambiente di produzione e non avevo i log a debug):

2020-02-18 10:24:56,206 26999 INFO dev Postal Payment Generate: Generate postal payment with this command: bollettino-cli generate --order-numamount=29.82 --order-reason="Pagamento Fattura 02699/2019" --order-textamount="ventinove/82" --payee-account=1012110999 --payee-name="Acme s.r.l." --payer-name="Rossi Mario" --payer-street="Via del Test, 3" --payer-zip="00150" --payer-location="Roma RM"
2020-02-18 10:25:02,097 12854 INFO dev werkzeug: 127.0.0.1 - - [18/Feb/2020 10:25:02] "POST /web/action/load HTTP/1.0" 200 -
2020-02-18 10:25:02,194 12854 INFO dev werkzeug: 127.0.0.1 - - [18/Feb/2020 10:25:02] "POST /web/dataset/call_kw/mail.mail/fields_view_get HTTP/1.0" 200 -
2020-02-18 10:25:02,267 12854 INFO dev werkzeug: 127.0.0.1 - - [18/Feb/2020 10:25:02] "POST /web/dataset/call_kw/mail.mail/fields_view_get HTTP/1.0" 200 -
2020-02-18 10:25:02,297 12965 INFO dev werkzeug: 127.0.0.1 - - [18/Feb/2020 10:25:02] "POST /web/dataset/call_kw/ir.filters/get_filters HTTP/1.0" 200 -
2020-02-18 10:25:02,332 12854 INFO dev werkzeug: 127.0.0.1 - - [18/Feb/2020 10:25:02] "POST /web/dataset/call_kw/mail.mail/fields_get HTTP/1.0" 200 -
2020-02-18 10:25:02,490 12854 INFO dev werkzeug: 127.0.0.1 - - [18/Feb/2020 10:25:02] "POST /web/dataset/call_kw/mail.mail/fields_view_get HTTP/1.0" 200 -
2020-02-18 10:25:02,517 951 ERROR ? openerp.service.server: Worker (26999) timeout
2020-02-18 10:25:02,522 951 ERROR ? openerp.service.server: Worker (26999) timeout
2020-02-18 10:25:02,551 20649 INFO ? openerp.service.server: Worker WorkerHTTP (20649) alive
Considera che per ogni fattura, prima dell'invio, viene generato un pdf (bollettino postale) tramite una libreria esterna ruby.
Ogni elaborazione (pdf bollettino + salvataggio attach + invio email) impiega circa 7 secondi per fattura.
Potrebbe essere legato ai tempi di elaborazione?
Effettuando un test con un numero ridotto di fatture (es. 5) l'errore non si presenta.

Grazie mille
Avatar
Abbandona