A configuração padrão do Ubuntu é que o PHP não expira as sessões, mas há uma tarefa cron que exclui arquivos antigos. Uma discussão completa sobre isso levaria algum tempo (IMHO, é uma idéia muito ruim), mas não estou ciente de Redhat ter uma abordagem semelhante.
Você não forneceu detalhes da configuração da sua sessão. Esta situação pode surgir devido aos valores para qualquer sessão de session.gc_probability, session.gc_divisor ou session.gc_maxlifetime. Definir os padrões de 1, 100 e 1440 deve garantir um sistema homeostático razoavelmente uma vez que você tenha limpado os arquivos conforme descrito nas outras respostas.
Você não disse quantas sessões simultâneas você vê no seu sistema, seu tamanho médio, nem o sistema de arquivos em que elas estão armazenadas. Se você espera mais de 300 sessões (dependendo do sistema de arquivos), você deve considerar o uso de uma árvore de diretório em vez de um único diretório para armazenar os arquivos; prefixar o session.save_path com 1 ou 2 (supondo que este não seja um servidor NFS suportando um cluster de servidores, caso em que você deve mover para uma arquitetura diferente).
Matt menciona que pode ser a configuração do selinux. Se isso estiver permitindo que arquivos sejam criados, mas nunca excluídos. Embora isso seja possível, sugere-se que a configuração do sistema seja seriamente confusa. Se este for o caso (verifique o seu log de auditoria), então você provavelmente deve fazer uma instalação limpa e restaurar seu aplicativo.
É muito improvável que tenha algo a ver com programação ruim.