autovacuum challenges after upgrade to postgresql 9.6
I'd suggest you change your strategy. 


  Specifically, one of our processes updates several columns one-at-a-time in such a table, and in the code log, I can see where it pauses and hangs, for up to 30 minutes, and then picks up later as if nothing happened, and updates many consecutive columns in the same with no such hang, within seconds.


One such update can easily double the size of your table, since each UPDATE is basically equivalent to one DELETE one INSERT, which leaves each deleted row occupying useless space until the table it is VACUUMed and that space can be reused for the next round of UPDATEs.

You can do:


Change the strategy and update as many columns as you can at once. Your process will be much quicker because the data will be accessed many less times.
Issue a VACUUM from your code after each UPDATE round, so that the unused spaced is available for the next UPDATE round.
Under some circumstances, doing the UPDATEs in batches of (let's say) 1.000, and committing after each batch might ease the sitution.


Any combination of the three techniques will probably ease the updates.