'Erro de conexão do PDO: SQLSTATE [HY000] [2002] Não é possível conectar-se ao servidor MySQL local por meio do soquete' /var/run/mysqld/mysqld.sock '

1

Estou recebendo

'PDO Connection Error: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

erro quando estou tentando fazer muita atualização e inserção. Com muita atualização, quero dizer 20k-30k transação por minuto. Por exemplo, quando tento fazer um processamento em lote com mais de 10 mil registros em uma tabela, estou começando a receber esse erro.

Eu procurei em documentos de referência serverfault e MySQL e descobri que a localização inválida do arquivo sock ou o servidor mysql inoperante podem causar esse erro, mas meu caminho de arquivos sock é true e o servidor mysql está ativo. Porque normalmente eu consigo conectar ao mysql e executar query.

O limite de conexão pode causar esse erro? Meu valor atual da variável max_connections é 151, e isso pode não ser suficiente para 10k transações por minuto. Mas como eu sei, quando muitas conexões abertas para o mysql, ele dá muitas conexões erro não pode se conectar através de erro de soquete.

Eu mudei, meu aplicativo para usar mysql_pconnect em vez de mysql_connect. Não sei o que acontecerá quando eu tentar executar o cron job para processar registros de 10k.

Você tem alguma ideia? Se eu não conseguir encontrar uma resposta para este problema, tentarei obter uma máquina grande para o MySQL com processadores de 4-8 GB, processadores 4-8 e tente com esta configuração.

    
por Gurkan Oluc 17.07.2012 / 16:43

2 respostas

1

O seu sistema mostra algum sinal de lentidão ou atraso quando isso acontece? Se assim for, uma máquina mais robusta ajudará. Se não, então provavelmente há algumas proteções padrão que impedem uma tempestade de solicitações.

Veja este bug para mais informações:

link

Importante, aumentar a capacidade do mysql de enfileirar pedidos de "back log" configurando

back_log = 1000

no seu arquivo /etc/mysql/my.cnf na seção [mysqld] (e reiniciando o mysql).

Em segundo lugar, também eleve o mesmo limite no linux:

sudo sysctl -w net.core.somaxconn=1024

Não se esqueça de editar o arquivo /etc/sysctl.conf e adicionar

net.core.somaxconn=1024

Na parte inferior, se isso resolver seu problema, caso contrário, ele estará de volta na próxima reinicialização!

    
por 20.07.2012 / 22:53
0

Pode ser um problema com o processamento do loopback do host local pelo SQL. Tente fazer a conexão para 127.0.0.1 ou o IP interno do servidor.

    
por 18.03.2016 / 17:23