PostgreSQL Query Cache - неожиданное закрытие соединения - PullRequest
2 голосов
/ 21 декабря 2011
<?php
$c = pg_connect( $connectionString, PGSQL_CONNECT_FORCE_NEW );

$queries = array (
        "SELECT COUNT(*) AS data FROM articles",
        "SELECT * FROM posts WHERE visible = TRUE",
        "SELECT * FROM countries WHERE visible = FALSE",
        "SELECT * FROM types WHERE visible = TRUE"
);

foreach ( $queries as $query ) {
        $res = @pg_query( $c, $query );
        if ( empty( $res ) ) {
                echo "[ERR] " . pg_last_error( $c ) . "\n";
        } else {
                echo "[OK]\n";
        }
}

Фрагмент приведенного выше кода впервые генерирует это:

[OK]
[OK]
[OK]
[OK]

но во второй раз это:

[OK]
[OK]
[ERR] server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
[ERR] server closed the connection unexpectedly
    This probably means the server terminated abnormally
        before or while processing the request.

Это означает, что некоторые кэшированные запросы вызывают проблемы. Мы пытались изменить порядок запросов, но это не помогло. Только простые запросы, такие как SELECT 1+8, которые, вероятно, не кэшированы, всегда работают хорошо.

Аналогичная проблема может быть смоделирована с использованием psql и, возможно, любого другого языкового драйвера (не только PHP).

Все проблемы возникли, когда мы установили PostgreSQL Query Cache .

Должен ли кеш запросов быть настроен как-то иначе, не вести себя таким образом?

Наши конфигурационные файлы находятся здесь: http://pastebin.com/g2dBjba0 - pcqd_hba.conf http://pastebin.com/X9Y3zrjx - pcqd.conf

1 Ответ

0 голосов
/ 24 марта 2013

Скорее всего, у вас есть ошибка в PostgreSQL Query Cache, которая вызывает ошибки в бэкэнде.Лучшее решение - удалить это дополнение.

...