The line in question returning the exception in CRedis: 

- https://github.com/tburry/credis/blob/master/Client.php#L991-L1002

NOTE the timeout causing because of the read meta data of the redis process stream.  More than likely you've hit timeout & or memory limits possibly.

More details on stream_get_meta_data: 

- https://php.net/manual/en/function.stream-get-meta-data.php


First make sure you are using the latest versions of Collin's modules for Redis with Magento.

- https://github.com/colinmollenhour/Cm_Cache_Backend_Redis
- https://github.com/colinmollenhour/Cm_RedisSession

One thing to note in Cm_RedisSession is: 

`A process may lose it's lock if another process breaks it, in which case the session will not be written.` 

Also setup a garbage collection cron script noted here:

- https://github.com/colinmollenhour/Cm_Cache_Backend_Redis#example-garbage-collection-script-magento

Be sure to review `local.xml` configurations, and Redis's configurations, particularly timeouts and max limits.  Compare with any log data and known hardware limits of the server.

More than likely with such a large set of Customer Groups and 2 websites, the amount of required data to be indexed is going to be quite large as you mentioned. Most likely the indexing process is timing out or hitting a max limit causing the indexing to fail, and with such a long process occurring in Redis for the current session a read timeout occurs.

Ultimately the best solution is to leverage Asynchronous indexing, Class path caching, disable logging tables, and disable Core Magento modules not required.  With these in place monitoring the processes closely with the other tools mentioned below to help pinpoint the location of the limits being hit.



Disable logging and any unused core modules you don't use:

- https://gist.github.com/molotovbliss/c36c25b7a08afda2848b

Some modules to consider when needing more insight into the indexing/caching mechanisms:

Improve Index management in Magento. Enables Magento to process indexes asynchronously. I would highly recommend giving this a try as it will chunk up the data needing to be indexed and spawned across separate PHP processes. By Default Magento only uses one CPU Core when indexing. On a large multi-core system this helps tremendously with indexing performance.

- https://github.com/AOEpeople/Aoe_Index

There is a paid for solution as well, as Aoe_Index hasn't been updated in over 4 years, and claims to be EE 1.14+ compatible:

- http://mirasvit.com/magento-extensions/magento-asynchronous-reindex.html

With as many files/folders that Magento has, this helps the Autoloader find the exact files its looking for instead of fseek's on your servers file system to locate the files.  Not a direct solution to your problem but will greatly speed up Magento's performance.

- https://github.com/AOEpeople/Aoe_ClassPathCache



Utility for managing Redis services directly in Magento's admin:

- https://github.com/steverobbins/Magento-Redismanager

This module adds some statistics to System -> Index Management for the changelog based indexers introduced in Magento Enterprise Edition 1.13+

- https://github.com/AOEpeople/Aoe_EeIndexerStats

Recommended Profiler over Magento's built-in one:

- https://github.com/AOEpeople/Aoe_Profiler



- http://inchoo.net/magento/using-redis-cache-backend-and-session-storage-in-magento/

- https://www.reddit.com/r/Magento/comments/2e66sf/trying_to_make_magento_reindex_faster/

- https://magento.stackexchange.com/questions/13957/full-page-cache-on-ce-1-8-an-fpc-magento-module-varnish-both/13992#13992