I also have experienced issues with MySQL 5.6 locking even when ALGORITHM=INPLACE, LOCK=NONE;
is used. I would first check the following:
Check constraints on table
The ALTER TABLE clause LOCK=NONE is not permitted if there are ON...CASCADE or ON...SET NULL constraints on the table.
Source:
https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-limitations.html
Does the table have a foreign key relationship?
An online DDL operation on a table in a foreign key relationship does not wait for a transaction executing on the other table in the foreign key relationship to commit or rollback. The transaction holds an exclusive metadata lock on the table it is updating and shared metadata lock on the foreign-key-related table (required for foreign key checking). The shared metadata lock permits the online DDL operation to proceed but blocks the operation in its final phase, when an exclusive metadata lock is required to update the table definition. This scenario can result in deadlocks as other transactions wait for the online DDL operation to finish.
Source:
https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-limitations.html
And Read about Metadata locking here:
https://dev.mysql.com/doc/refman/5.6/en/metadata-locking.html
Alter tables from old timeformat first
If you have created your tables from before MySQL 5.6 with DATETIME or TIMESTAMP fields, they need to be upgraded to MySQL's 5.6 new format.
InnoDB tables created before MySQL 5.6 do not support ALTER TABLE ... ALGORITHM=INPLACE for tables that include temporal columns (DATE, DATETIME or TIMESTAMP) and have not been rebuilt using ALTER TABLE ... ALGORITHM=COPY. In this case, an ALTER TABLE ... ALGORITHM=INPLACE operation returns the following error:
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported.
Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
Source:
https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-limitations.html
Check if the table has Partitioning
Partitioning changes how alter table rules apply.
Check partitioning status of table
show table status;
Look for 'Engine' not equalling InnoDB
Sources:
https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-operations.html#online-ddl-partitioning
Finally as Rick James in his answer mentioned, upgrading from 5.6 to 8.0 may be an option as it provides other improvements.