Magneto 2 performance is relay bad, with a lot of custom extensions it doesn't work well - serve response time 3-5 sec. Core functionality also twice slower than M1. Konstntin Gerasimov is right! Check his post with performance test:
magento version you have is 2.1, web root not pub/, TTFB time is only ~4 seconds, so production mode cache not working, (with proper built theme and production mode TTFB must be ~500ms) what makes me think that you have issues, not optimal code, probably bad customizations or outdated extensions, outdated template design.
please run magento profiler, to see ...
Rate Per Second=RPS - Suggestions to consider for your my.cnf [mysqld] section
read_rnd_buffer_size=256K # from 16M to reduce handler_read_rnd_next RPS
innodb_io_capacity=1900 # from 200 to enable higher IOPS to your devices
innodb_lru_scan_depth=100 # from 1024 to conserve 90% of CPU cycles used for function
query_cache_limit=0 # from 2M to conserve ...