Определенно, эта проблема исходит от APC, исходный код из пакета apc-3.1.6-r1. Когда элемент вставляется в пользовательский или файловый кеш, вызывается эта функция.
static void process_pending_removals(apc_cache_t* cache TSRMLS_DC)
{
slot_t** slot;
time_t now;
/* This function scans the list of removed cache entries and deletes any
* entry whose reference count is zero (indicating that it is no longer
* being executed) or that has been on the pending list for more than
* cache->gc_ttl seconds (we issue a warning in the latter case).
*/
if (!cache->header->deleted_list)
return;
slot = &cache->header->deleted_list;
now = time(0);
while (*slot != NULL) {
int gc_sec = cache->gc_ttl ? (now - (*slot)->deletion_time) : 0;
if ((*slot)->value->ref_count <= 0 || gc_sec > cache->gc_ttl) {
slot_t* dead = *slot;
if (dead->value->ref_count > 0) {
switch(dead->value->type) {
case APC_CACHE_ENTRY_FILE:
apc_warning("GC cache entry '%s' (dev=%d ino=%d) was on gc-list for %d seconds" TSRMLS_CC,
dead->value->data.file.filename, dead->key.data.file.device, dead->key.data.file.inode, gc_sec);
break;
case APC_CACHE_ENTRY_USER:
apc_warning("GC cache entry '%s'was on gc-list for %d seconds" TSRMLS_CC, dead->value->data.user.info, gc_sec);
break;
}
}
*slot = dead->next;
free_slot(dead TSRMLS_CC);
}
else {
slot = &(*slot)->next;
}
}
}
Из конфигурации APC (http://cz.php.net/manual/en/apc.configuration.php#ini.apc.gc-ttl)
apc.gc_ttl integer
Количество секунд, в течение которых запись в кэше может оставаться в списке сбора мусора. Это значение обеспечивает отказоустойчивость в случае смерти серверного процесса при выполнении кэшированного исходного файла; если этот исходный файл изменен, память, выделенная для старой версии, не будет возвращена, пока не достигнут этот TTL. Установите на ноль, чтобы отключить эту функцию.
Мы получаем сообщения "Запись в кэше GC"% s "(dev =% d ino =% d) была в списке gc в течение% d секунд" или "Запись в кэше GC"% s "была в списке gc для% d секунд "в этом состоянии:
(gc_sec > cache->gc_ttl) && (dead->value->ref_count > 0)
Первое условие означает, что элемент был удален позже, чем apc.gc_ttl несколько секунд назад, и он все еще находится в списке сборщика мусора. Условие Seconds означает, что на элемент все еще ссылаются.
например. когда процесс неожиданно умер, ссылка не уменьшается. Сначала в кэше APC активны apc.ttl секунд, затем он удаляется (следующего элемента по этому элементу нет). Теперь элемент находится в списке сборщика мусора (GC) и время ожидания apc.gc_ttl работает. Когда значение apc.gc_ttl меньше (теперь - item_deletion_time), выдается предупреждение и элемент полностью сбрасывается.
Попробуйте проверить свои журналы (веб-сервер, php, система / ядро) на наличие критических ошибок, например. php, веб-сервер segfault.