Desempenho de consulta PHP / MySQL horrível no Ubuntu Server 10.04

1

Acabei de fazer uma instalação clara do Ubuntu Server 10.04 com a configuração padrão do LAMP.

Em seguida, criei um pequeno script para testar as velocidades de inserção em uma tabela com três colunas.

Quando executo o script em qualquer uma das minhas outras máquinas (centos e fedora), recebo cerca de 2000-3000 inserções por segundo.

Na máquina Ubuntu, recebo cerca de 20 inserções por segundo (mesmo script exato).

Eu tentei trocar o script para usar soquetes, mas isso não mudou nada.

Quando faço mysql dumps e restaura, o mysql tem um desempenho muito bom e carrega 1.000.000 de registros na tabela em aproximadamente 20 segundos.

Por que o PHP está obtendo taxas de consulta tão ruins no mysql? (Eu tentei usar pdo e mysqli - ambos obtêm os mesmos resultados).

Instalado atualmente:

libmysqlclient16                5.1.41-3ubuntu12
mysql-client-5.1                5.1.41-3ubuntu12
mysql-client-core-5.1           5.1.41-3ubuntu12
mysql-common                    5.1.41-3ubuntu12
mysql-server                    5.1.41-3ubuntu12
mysql-server-5.1                5.1.41-3ubuntu12
mysql-server-core-5.1           5.1.41-3ubuntu12
php5-mysql                      5.3.2-1ubuntu4.2
libapache2-mod-php5             5.3.2-1ubuntu4.2
php-apc                         3.1.3p1-2
php5-cli                        5.3.2-1ubuntu4.2
php5-common                     5.3.2-1ubuntu4.2
php5-mysql                      5.3.2-1ubuntu4.2

EDIT / RESOLVIDO:

Eu fiz uma reinstalação do Ubuntu, mesmo problema. Eu instalei o Fedora 13, SAME PROBLEM .... depois de brincar com as tabelas, notei que era um problema do InnoDB (o MyISAM estava inserindo milhares de linhas por segundo).

Como se constatou, innodb_flush_log_at_trx_commit foi padronizado para "1", o que significa que ele libera para o disco em cada gravação ... que estava assassinando o meu desempenho. Uma vez que esta é uma máquina dell de consumo de baixa qualidade, quando eu mudei para innodb_flush_log_at_trx_commit = 0 (flush a cada segundo), o desempenho do céu disparou. Agora sou capaz de inserir 1.000.000 linhas em 45 segundos. : D

    
por Ian 07.08.2010 / 17:30

2 respostas

1

Parece que sua configuração do MySQL precisa de ajuste. Uma configuração base do MySQL em qualquer distro será do lado conservador, assumindo que eles não são o único serviço em execução no servidor. Você deve gastar algum tempo e ajustá-lo. Se suas tabelas estiverem no formato InnoDB, certifique-se de ajustar a variável innodb_buffer_pool_size para aproximadamente 80% da memória do sistema (supondo que seja o único serviço a ser executado).

Esse é provavelmente o primeiro lugar para comparar os sistemas operacionais. Cada distro tem seus próprios padrões. Você deve combinar as configurações se você quiser executar um teste justo entre elas.

Espero que isso ajude!

    
por 18.08.2010 / 05:04
0

Concordo com o troyengel. Você precisa comparar seu my.cnf nos servidores que estão dando comportamentos diferentes para ver onde o gargalo pode estar. A partir do seu próprio teste, parece mais provável que esteja relacionado à sua configuração do MySQL e menos propenso a estar relacionado à sua configuração do PHP. - dxjones

    
por 18.08.2010 / 04:30