When you have a single producer, a persistent message has to be persisted on the disk, and synced to your disk.
the client will block until all of that is happening.
The server is programmed to manage multiple producers and use most of your hardware, but if you only have one producer your performance will be maxed out by your network latency + your disk sync speed.
So for a single producer, sending a persistent message non transactionally (every send is a sync) it does sound right.
Edit: Also look at the set/getJournalBufferTimeout_AIO and set/getJournalBufferTimeout_NIO at ConfigurationImpl. Those are the values that are sent to the TimedBuffer before the server syncs data on disk waiting for other clients to sync at the same time.