Velocizzare Rails (Redmine) senza toccare il codice di Ruby
Il nostro cliente riportava di tempi di risposta molto lunghi con la sua applicazione Easy Redmine (RoR). Easy Redmine veniva eseguito sul server virtuale Debian del cliente.
Easy Software Ltd. ha realizzato internamente una modalità per velocizzare le applicazioni Ruby on Rails che semplicemente si basa sul fine-tuning di singoli componenti dell'ambiente di produzione di Easy Redmine (RoR), costituito da un web-server, un'applicazione server e un server database.
Questa soluzione è stata testata solo su server Linux con CentOS e Ubuntu / Debian
Questo "how-to" richiede una conoscenza avanzata di Linux.
Semplici raccomandazioni per applicazioni RoR più rapide
Utilizzare Nginx per web server con socket Unix
upstream unicorn {
server UNIX: /tmp/easysredmine.sock fail_timeout = 0;
}
server {
listen 80;
Nome_server easysredmine;
Error_log /var/log/nginx/easysredmine_error.log;
access_log /srv/log/nginx/easysredmine_access.log;
posizione / {
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
Proxy_redirect disattivato;
proxy_pass http://unicorn;
}
}
Utilizzare Unicorn per application server Ruby con le seguenti impostazioni in unicorn.rb
Worker_processes 4
ascoltare '/tmp/easyredmine.sock'
timeout 300
Utilizzare rubino 2.1.5 con la patch railsexpress
rvm installare Ruby-2.1.5 --patch railsexpress
impostazioni di Ruby ambiente Tune
export RUBY_GC_HEAP_INIT_SLOTS=1800000;
export RUBY_HEAP_FREE_MIN = 18000;
export RUBY_GC_MALLOC_LIMIT = 120000000;
export RUBY_HEAP_SLOTS_INCREMENT = 144000;
export RUBY_HEAP_SLOTS_GROWTH_FACTOR = 1;
Utilizzare database di MariaDB o MySQL 5.5 con le seguenti impostazioni
[mysqld]
Bulk_insert_buffer_size = 64M
Tmp_table_size = 512M
Max_heap_table_size = 512M
query_cache_limit = 512K
Query_cache_size = 512M
In questo caso particolare ha portato ad accelerare la risposta 7 volte rispetto alle impostazioni predefinite clienti.
Redmine velocità di ottimizzazione Risultati
