Похоже, у вас проблема с 1000+ файлами в одном каталоге. В традиционной файловой системе Unix поиск одного файла по имени требует сканирования записей каталога по одному. Если у вас есть список файлов и вы пытаетесь прочитать их все, потребуется около 500000 записей каталога, и это будет медленно. Это алгоритм O (n ^ 2), и он будет только ухудшаться по мере добавления файлов.
Более новые файловые системы имеют опции для обеспечения более эффективного доступа к каталогам (например, https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Hash_Tree_Directories), но если вы не можете / не хотите изменять параметры файловой системы, вам придется разделить ваши файлы на каталоги.
Например, вы можете взять первые две буквы имени пользователя и использовать их в качестве каталога. Это не очень хорошо, потому что вы получите неравномерное распределение, лучше будет использовать хеш, но тогда будет трудно найти записи вручную.
В качестве альтернативы вы можете перебирать записи каталога (с помощью opendir и readdir) и проверять, совпадают ли имена файлов с вашими пользователями, и оставлять проблемы, связанные с созданием огромного каталога, позже.
В качестве альтернативы рассмотрите возможность использования базы данных для своего уровня хранения.