LINUX.ORG.RU

Минут 10-15 редис работает, а потом Connection refused Failed to open DB connection.

 , ,


0

1

В итоге решения проблем по перегрузу процессора редис сервером, Redis сначала работает прекрасно, но потом дико тормозит 100% CPU! проблема вроде как решилась. Но возникла совсем другая.

Все ключи теперь записываются таким образом. #set $redis->hMset(‘someKey’, [‘hello’ => ‘world’, ‘someKey’ => ‘someValue’]); #get $redis->hGetAll(‘someKey’);

Рэдис отлично работает минут 15 а дальше

Connection refused Failed to open DB connection.

Никаких логов в nginx нет. В редис тоже ничего нового не написано.

slowlog get 10 (empty list or set)

вообще пустой.. я опять не знаю куда идти дальше.


Во-первых, странно, что тебя в прошлом треде еще не научили код подсвечивать (прочитай про разметку!).

Во-вторых, непонятно, как ты коннектишься, покажи код.

И в-третьих, в продолжение прошлого треда - ты имена хешей как сделал, надеюсь, не по id?

cdshines ★★★★ ()
Последнее исправление: cdshines (всего исправлений: 1)
Ответ на: комментарий от cdshines

Использую Yii2 .. поэтому могу показать следующее вот это расширение использую для работы https://github.com/yiisoft/yii2-redis выглядит ключ. http://i.piccy.info/i9/537c3e7fe938161ec632b1fa02a51202/1550417137/104680/130... так Я боюсь что я не правильно понял про организацию ключа и если это так то что плохого в моём? Сейчас ищу как пере делать на pconnect

 config такой
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ],

....
соединение такое 'yii\redis\Connection'
 public function open()
    {
        if ($this->_socket !== false) {
            return;
        }
        $connection = ($this->unixSocket ?: $this->hostname . ':' . $this->port) . ', database=' . $this->database;
        \Yii::trace('Opening redis DB connection: ' . $connection, __METHOD__);
        $this->_socket = @stream_socket_client(
            $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port,
            $errorNumber,
            $errorDescription,
            $this->connectionTimeout ? $this->connectionTimeout : ini_get('default_socket_timeout'),
            $this->socketClientFlags
        );
        if ($this->_socket) {
            if ($this->dataTimeout !== null) {
                stream_set_timeout($this->_socket, $timeout = (int) $this->dataTimeout, (int) (($this->dataTimeout - $timeout) * 1000000));
            }
            if ($this->password !== null) {
                $this->executeCommand('AUTH', [$this->password]);
            }
            if ($this->database !== null) {
                $this->executeCommand('SELECT', [$this->database]);
            }
            $this->initConnection();
        } else {
            \Yii::error("Failed to open redis DB connection ($connection): $errorNumber - $errorDescription", __CLASS__);
            $message = YII_DEBUG ? "Failed to open redis DB connection ($connection): $errorNumber - $errorDescription" : 'Failed to open DB connection.';
            throw new Exception($message, $errorDescription, $errorNumber);
        }
    }
 

taram ()
Ответ на: комментарий от deep-purple

Создал подключение через unixsocket. Сделал ключи через ":" . результат тот же . Работает некоторое время, при этом нагрузка на сервере менее 1% работает 5 минут и обырвается с ошибкой той же самой Connection refused

taram ()
Ответ на: комментарий от cdshines

Всё! У меня всё получилось, работает очень быстро и всё как надо. После проделанных описанных выше вещей, он продолжал вылетать до тех пор пока я ... не перезапустил php-fpm (видимо на момент открытия сокета, все скопившиеся запросы пыхи, разносили редис в пух) сейчас нагрузка подымается не выше 0.3 - 1% CPU и выделенной памяти 5гб . Для текущей нагрузки сайта, ресурс более чем достаточный. Всем спасибо. Тему можно закрывать.

taram ()