Two PHP-FPM pools have two separate OPcache shared memory segments, so a cache reset in one does nothing to the other — and the site serves a mix of old and new code after a deploy.
# a reset from the CLI touches the CLI's cache, which is a third one
php -r 'opcache_reset();'
# reload the pools instead; each restarts its workers with an empty cache
systemctl reload php7.1-fpm
A reload is the reliable answer and is what a deploy should do. The alternative — an HTTP endpoint calling opcache_reset() — has to be hit once per pool and must not be reachable publicly, since resetting the cache under load is a denial of service. With validate_timestamps=0 this stops being optional: without the reload the new release simply does not take effect.