Ответ 1
Определенно эта проблема исходит от 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 не достигнет. Установите значение "0", чтобы отключить эту функцию.
Мы получаем сообщения "Запись GC-кэша" % s "(dev =% d ino =% d) была включена в gc-list для% d секунд" или "Запись в кеш GC" % s'was на gc-list для% d секунд "в этом состоянии:
(gc_sec > cache->gc_ttl) && (dead->value->ref_count > 0)
Первое условие означает, что элемент был удален позже, а затем apc.gc_ttl секунд назад и его все еще в списке сборщиков мусора. Seconds condition означает, элемент все еще ссылается.
например. когда процесс неожиданно умер, ссылка не уменьшается. Первые apc.ttl секунд активны в кэше APC, а затем удаляются (следующий элемент не попадает в этот элемент). Теперь элемент находится в списке сборщиков мусора (GC) и выполняется время ожидания apc.gc_ttl. Когда apc.gc_ttl меньше (теперь - item_deletion_time), предупреждение записывается, и элемент полностью очищается.
Попробуйте проверить свои журналы (веб-сервер, php, system/kernel) на критические ошибки, например. php, веб-сервер segfault.