Zend certified PHP/Magento developer

How to optimize Magento 2 indexer

I’m having one magento 2 website which contains 1 million products. The website is based on MSI and there are multiple CRON jobs running on hourly basis to do the inventory and price updates. So the products will get enabled or disabled based on the inventory update.The issue is that indexer is not working perfectly as all the enabled products on the backend are not listing on the category or brand pages.

Also the manual indexing is taking long hours to complete.

Please help me on indexer batching or optimization?