我在Ubuntu 14.04(几乎默认设置),虚拟云服务器上的Apache 2.4.7有问题。
在中等服务器负载(大约2 / 3.0 cpu使用率和可用内存吨数)build立HTTPS连接的时间长达5-15秒(有时更多)。 下面是一个curl输出的例子,看看这个时候:
My-MBP:~ me$ curl --trace-time --trace-ascii - https://domain.tld/some.png 20:44:40.952209 == Info: Trying 111.111.111.111... 20:45:16.046183 == Info: Connected to domain.tld (111.111.111.111) port 443 (#0) 20:45:32.371816 == Info: TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 20:45:32.371919 == Info: Server certificate: www.domain.tld 20:45:32.371946 == Info: Server certificate: GlobalSign Extended Validation CA - SHA256 - G2 20:45:32.372025 == Info: Server certificate: GlobalSign 20:45:32.372069 => Send header, 125 bytes (0x7d) 0000: GET /some.png HTTP/1.1 003c: Host: domain.tld 0055: User-Agent: curl/7.43.0 006e: Accept: */* 007b: 20:45:32.538703 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 20:45:32.538747 <= Recv header, 37 bytes (0x25) 0000: Date: Wed, 09 Dec 2015 19:47:34 GMT 20:45:32.538765 <= Recv header, 16 bytes (0x10) 0000: Server: Apache 20:45:32.538778 <= Recv header, 37 bytes (0x25) 0000: X-Powered-By: PHP/5.5.9-1ubuntu4.14 20:45:32.538795 <= Recv header, 23 bytes (0x17) 0000: Cache-Control: public 20:45:32.538810 <= Recv header, 42 bytes (0x2a) 0000: ETag: "1234567890" 20:45:32.538827 <= Recv header, 40 bytes (0x28) 0000: Expires: Wed, 09 Dec 2015 19:57:34 GMT 20:45:32.538844 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 7159 20:45:32.538860 <= Recv header, 25 bytes (0x19) 0000: Content-Type: image/png 20:45:32.538876 <= Recv header, 2 bytes (0x2) 0000: 20:45:32.539541 <= Recv data, 7159 bytes (0x1bf7) ...
而且文件的传输速度也相当不错,只有build立连接的时间是可怕的。
但是:通过HTTP对同一文件的整个请求/响应工作非常快(<100 ms)。 在大量使用(> 3.0)的时候,HTTP和HTTPS有时也没有问题。
有什么build议么?
编辑:
<IfModule mod_ssl.c> ... SSLRandomSeed startup builtin SSLRandomSeed startup file:/dev/urandom 512 SSLRandomSeed connect builtin SSLRandomSeed connect file:/dev/urandom 512 ... </IfModule>
这不应该发生在“几乎默认”安装,所以我build议你联系你的托pipe公司关于这个问题,看看它是否已知和/或他们可以解决这个问题。
其他可能有助于解决问题的事情:
openssl speed
对于服务器: openssl s_server -4 -www -accept 444 -cert /etc/ssl/example.com.crt -key /etc/ssl/example.com.key -verify_return_error -debug
对于客户端: openssl s_client -debug -connect example.com:444
您也可以尝试使用浏览器连接到https://example.com:444 。
SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM
检查您的托pipe公司的其他客户端是否有同样的问题(尝试连接到您周围的IP上的https)
检查是否使用nginx前端服务https将解决问题