Does Phusion Passenger restart gracefully when I touch restart.txt
Short answer : yes !
In fact, it will allow current request to finish, and serve new request with new version. I am trying to find reference to this, but can't find any for the moment.
I'm under the impression that each passenger app instance dies AFTER processing a request instead of restarting BEFORE the next request when restart.txt is touched. So there's a latency of one request in each passenger worker. As the process quits and the app spawner just spawns a new instance, I would not call this "graceful".
This means that the next request to a single instance of your application will be answered by that version of the instance which then quits (after doing its work). Current running requests won't be killed.