I have this problem with a thin server where systemd restart doesn't respect onebyone config, so it should stop and start each server individually. What's happening is that all servers are stopped first, then all are started which causes downtime in service. If I start it from a command line everything works as expected, but via systemd not so. I tried this on two different servers one ubuntu 16.04 and other Debian 9 with the same result .
Here is my thin.service file
[Unit]
Description=Thin Web Server
After=syslog.target
After=network.target
[Service]
Type=forking
User=luff
WorkingDirectory=/home/luff/bertani
ExecStart=/home/luff/.rvm/wrappers/bertani/thin -C config/thin.rb start
ExecStop=/home/luff/.rvm/wrappers/bertani/thin -C config/thin.rb stop
ExecReload=/home/luff/.rvm/wrappers/bertani/thin -C config/thin.rb restart
TimeoutSec=15
Restart=always
and my thin.rb config
environment: development
address: 0.0.0.0
port: 3000
timeout: 30
log: /home/luff/logs/thin.log
pid: /home/luff/tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
threadpool_size: 20
servers: 3
daemonize: true
onebyone: true