With Big numbers of product, we must config 2 price reindex(product price, promo catalog price ) as widely separated
/app/code/core/Mage/Catalog/Model/Observer.php
<crontab>
<jobs>
<catalog_product_index_price_reindex_all>
<schedule>
<cron_expr>0 2 * * *</cron_expr>
</schedule>
<run>
<model>catalog/observer::reindexProductPrices</model>
</run>
</catalog_product_index_price_reindex_all>
</jobs>
</crontab>
/app/code/core/Mage/CatalogRule/Model/Observer.php
<jobs>
<catalogrule_apply_all>
<schedule>
<cron_expr>0 1 * * *</cron_expr>
</schedule>
<run>
<model>catalogrule/observer::dailyCatalogUpdate</model>
</run>
</catalogrule_apply_all>
</jobs>