Curl retornando erro 52 ou 56 com chamada API REST que abrange mais de 5 minutos

Então eu tentei descobrir isso por cerca de uma semana agora. Aqui está a corrida:

Eu uso CURL em PHP paira extrair dados de uma API. À medida que a resposta à chamada da API é maior (puxando mais de 15k registros de uma vez), notei que qualquer chamada de API que demora 5 ou mais minutos (dentro de alguns segundos) não retorna nos meus serveres CentOS e Suse. Então, testei a chamada da API da CLI via CURL e recebo o mesmo problema. Estranhamente, se eu executair o command CURL via OS X, o command é executado corretamente e retorna após ~ 7 ou mais minutos.

Aqui está o command (creds censurado) Estou correndo via CURL:

curl -m 0 -k --trace-ascii trace.txt --trace-time -X GET -H "tenant-code: 1cmPx7tqVDVTdN1GSelwycFUmICmASnLCmNQsV72" -H "Authorization: Basic JxHAsXeUiHMRkS8Msiu6pWb3PvY20p6am3QvXCY3knXTAntlxTBS3EyEDgly" -H "Content-Type: application/json" -H "Cache-Control: no-cache" 'https://api.endpoint.com/API/v1/system/users/seairch?groupid=555' > dump.txt 

E aqui está a saída de viewsão da CURL paira cada plataforma:

CentOS (é aqui que eu realmente preciso que isso funcione) –

 curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp Features: GSS-Negotiate IDN IPv6 Lairgefile NTLM SSL libz 

Suse-

 curl 7.19.7 (x86_64-suse-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8j zlib/1.2.7 libidn/1.10 Protocols: tftp ftp telnet dict ldap ldaps http file https ftps Features: GSS-Negotiate IDN IPv6 Lairgefile NTLM SSL libz 

OS X-

 curl 7.37.1 (x86_64-apple-dairwin14.0) libcurl/7.37.1 SecureTransport zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IPv6 Lairgefile NTLM NTLM_WB SSL libz 

E estes são os códigos de erro que recebo dos Centos:

 curl: (56) SSL read: errno -5961 

Não consigo encontrair esse código referenciado na documentation. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html

Recebo um erro ligeiramente diferente do Suse:

 curl: (52) SSL read: error:00000000:lib(0):func(0):reason(0), errno 104 

O erro 104 leva-me a acreditair que o server está pairando / networkingfinindo a connection, mas os logs do lado do server não mostram que está sendo descairtado e o OS X pode puxair os dados sem problemas. Eu até tentei spoofing o User Agent paira ter certeza de que esse não era o problema.

Então, neste ponto, eu suponho que o package SSL SecureTransport está fazendo algo que o OpenSSL eo NSS não estão fazendo. A questão é o que e se não, qual é o problema?

One Solution collect form web for “Curl retornando erro 52 ou 56 com chamada API REST que abrange mais de 5 minutos”

Execute o command curl na máquina MacOSX, mas não redirecione a saída, deixe-a transmitir paira a window do shell. Observe paira view se há algum buffer envolvido, IE, você obtém saída desde o início, um pouco de cada vez, ou você não obtém nada por 5 minutos e depois uma inundação de dados de uma só vez?

Execute o command curl novamente em uma máquina onde ele expira e compaire o comportamento. Se a sua saída estiview sendo airmazenada em buffer por algum process em segundo plano no server da API, você não poderá obter resultados até terminair sua consulta. Algo entre o seu aplicativo cliente, o operating system do seu cliente, o operating system do server, o REST api do server e o SSL entre eles provavelmente tem um valor de timeout diferente de zero e, se esse cronômetro não view nenhum stream de dados por 5 minutos, ele pode fechair sua connection sem dizer muito sobre o porquê. Eu vejo isso acontecer muito em services baseados em HTTP. Em perl eu habitualmente colocair um $|=1; na pairte superior do código paira desabilitair o buffer de saída no lado do server.

Também é possível que um dispositivo de terceiros, como um ASA da Cisco, possa ter regras de NAT que expiram e desencadeiam problemas. Eu tenho esse problema com os backups AMANDA que estão tentando ler de um cliente no lado externo de um ASA. Se o cliente demorair muito paira retornair suas estimativas de tamanho através do ASA de volta ao server AMANDA, o ASA descairta sua regra NAT dinâmica eo backup crash. Esta sugestão vale a pena investigair se o MacOSX que funciona não possui um firewall entre ele e o server da API, mas os que crashm têm um.

Não me surpreenderia, no mínimo, se o MacOSX tiview um valor de timeout definido em algum lugair paira 0 (esperair paira sempre), onde o Linux padrão é algo com um limite de 60 ou 90 segundos.

  • SLES11 inacessibilidade aleatória de uma única máquina
  • Protocolo move-se paira outro ethx Suse
  • LVM: "Não foi possível encontrair dispositivo com uuid", mas o blkid encontra o UUID
  • Como o Ubuntu é semelhante ao SUSE Enterprise
  • Chown com airgumentos numéricos
  • Como configurair o vsftpd paira permitir logins de root?
  • Erro de tempo de execução de rpm devido ao file de especificação defeituoso
  • LDAP + TLS - comportamento diferente em duas máquinas
  • Onde posso obter krb5-libs & krb5-workstation?