Problemas de inicialização de instância da Amazon

12 views
Skip to first unread message

Maxwell Sampaio

unread,
Sep 21, 2015, 12:07:31 PM9/21/15
to titan-f...@googlegroups.com
Olá Camilo, bom dia,

Hoje tivemos um problema com instâncias executadas no AWS com relação à inicialização delas. Depois de investigar descobri o seguinte erro no arquivo de log:

2015/09/21 07:00:18 [error] 1912#0: *5094449 FastCGI sent in stderr: "PHP message: PHP Warning:  file_get_contents(http://ipinfo.io/10.248.53.241/json): failed to open stream: HTTP request failed! HTTP/1.1 504 GATEWAY_TIMEOUT^M
 in /var/www/titan/class/GoogleMaps.php on line 19" while reading response header from upstream, client: 10.248.53.241, server: localhost, request: "GET /contafacil/titan.php?target=body& HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "pontofacil.net", referrer: "http://pontofacil.net/contafacil/titan.php"

O que percebi era que o endereço verificado (10.248.53.241) é um endereço local e não de internet com isso o serviço ipinfo não estava conseguindo resolver ele.

Fiz a seguinte alteração no arquivo GoogleMaps e resolveu:


class GoogleMaps
{
        public static function geolocate ($ip = FALSE)
        {
                if ($ip === FALSE){
                        $ipaddress = '';

                        if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'])
                                $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
                        else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'])
                                $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
                        else if(isset($_SERVER['HTTP_X_FORWARDED']) && $_SERVER['HTTP_X_FORWARDED'])
                                $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
                        else if(isset($_SERVER['HTTP_FORWARDED_FOR']) && $_SERVER['HTTP_FORWARDED_FOR'])
                                $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
                        else if(isset($_SERVER['HTTP_FORWARDED']) && $_SERVER['HTTP_FORWARDED'])
                                $ipaddress = $_SERVER['HTTP_FORWARDED'];
                        else if(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'])
                                $ipaddress = $_SERVER['REMOTE_ADDR'];
                        else
                                $ipaddress = 'DESCONHECIDO';

                        $ip = $ipaddress;
                }
                ....
}


O que deve estar acontecendo é que para endereços locais, como é o caso da VM do AWS, não é possível obter a geolocalização e com esse código acima pretende-se recuperar o endereço IP externo do cliente que está acessando aplicação e não seu endereço de solicitação.

Analise a situação e faça as alterações que julgar necessárias para sanar isso, pois se isso não funcionar bem a aplicação fica muito lenta quando este serviço INFO.IO não funciona corretamente.



Atenciosamente,

Maxwell Sampaio
Mestre em Ciência da Computação pela FACOM/UFMS

Camilo Carromeu

unread,
Sep 21, 2015, 3:05:52 PM9/21/15
to Titan Framework
Olá Max,

Eu estava justamente mechendo neste tipo hoje para ele ficar mais "esperto".

Agora a API v3 do Google Maps somente é inserida quando há instanciação de algum tipo de dado que utilize mapas. Deve-se declarar explicitamente isso na implementação do tipo (o 'Map' e  o 'Note' já têm suporte).

O mesmo vale para a obtenção das coordenadas do usuário, que somente ocorre se o tipo Map estiver sendo utilizado.

Por favor, faça o teste e veja se o desempenho ficou melhor.

Abraços,

Camilo

--
Você recebeu essa mensagem porque está inscrito no grupo "Titan Framework" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para titan-framewo...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Maxwell Sampaio

unread,
Sep 21, 2015, 8:08:53 PM9/21/15
to titan-f...@googlegroups.com
Ok, Camilo,

Deu certo, agora a inicialização ficou mais rápida, mas reveja o código de recuperação do IP do cliente pois usar apenas $_SERVER["REMOTE_ADDR"] nem sempre funciona. Por isso que lhe passei o trecho de código anterior na qual fiz uma série de testes e ele tenta recuperar o IP mais externo do cliente e não aquele IP local que ele fez a requisição.

No mais voltou à normalidade a execução da instância.

Obrigado.

Atenciosamente,

Maxwell Sampaio
Mestre em Ciência da Computação pela FACOM/UFMS

Márcio Silva

unread,
Sep 21, 2015, 11:53:22 PM9/21/15
to titan-f...@googlegroups.com
Acredito que vale ressaltar que o servidor é o Nginx.
Enviado do Gmail para celular, desculpe quaisquer erros de digitação.
Reply all
Reply to author
Forward
0 new messages