Por que o PHP - MSSQL é muito lento quando o DB não está na mesma máquina que o código PHP?

1

Durante a tentativa de mover nosso site para o Azure, encontramos um problema com o nosso código PHP falando com o MSSQL.

No host dedicado atual (hospedando o PHP e o DB), ir para uma página normalmente leva menos de 2 segundos. Também executei as consultas necessárias por meio do SMS e elas levam menos de um segundo. A quantidade de dados retornados pelas consultas é muito pequena - 10 a 20 registros, certamente menos de 100 KB no total.

Com o site hospedado no Azure (conectado a um banco de dados SQL do Azure), a mesma página demora cerca de 40 segundos para ser carregada. Outras investigações mostraram que isso pode ter sido causado pelo banco de dados não estar na mesma máquina que o PHP - quando o site original é apontado em um banco de dados remoto (outra máquina dedicada ou a instância do Azure SQL) o tempo de carregamento da página sobe para o Intervalo de 40 segundos.

No caso do Azure, tanto o site quanto o banco de dados estão localizados na mesma região (N Europa). Ao testar usando nossas máquinas, ambas estão localizadas no Reino Unido.

A máquina de webhosting atual está executando o PHP 5.4 e o Microsoft SQL Server Express Edition. O site do Azure está sendo executado no PHP 5.4.

Em ambos os casos, estamos usando os drivers 3.0.1 Microsoft SQLSRV

Como podemos melhorar o desempenho ao se conectar a um banco de dados SQL remoto?

Eu publiquei esse post aqui em resposta à mesma pergunta em stackoverflow: link

    
por Tony Harrison 05.04.2013 / 16:49

1 resposta

1

Existem muitas coisas que podem causar isso. O truque é reduzi-lo ao correto. As causas mais prováveis são problema de rede ou problema de conexão ou problema de banco de dados. Nesta ordem:

A primeira coisa que eu tentaria é descartar um problema de rede: tente executar o ping do servidor de banco de dados do servidor da Web. A string de conexão está usando dns ou ip? O ping dns vs ip faz diferença?

Se os tempos de ping forem normais e rápidos, pode ser um problema de login no DB? Você pode se conectar ao servidor de banco de dados do SSMS? É rápido?

Se ainda está tudo bem, execute a consulta do site é executado usando SSMS- ainda é rápido? Se não, é um problema do DB - o novo DB provavelmente não é idêntico ao original. Talvez determinados índices / restrições não tenham sido copiados.

    
por 08.04.2013 / 19:31