Penundaan besar saat mengambil halaman dari situs tertentu

11

Saya memiliki masalah berikut: ketika saya mengambil halaman dari Hackage , saya mendapat penundaan besar (sekitar 30 detik). Permintaan lebih lanjut cepat, tetapi jika saya tidak terhubung selama beberapa menit, masalahnya kembali.

Yang menarik dari masalah ini adalah:

  • itu khusus untuk situs khusus ini (Peretasan) - Saya tidak mendapatkan masalah serupa dengan situs lain (dan saya mengunjungi beberapa);
  • tampaknya khusus untuk ISP saya - ketika saya terhubung dari tempat lain, tidak ada masalah seperti itu;
  • itu tidak terkait dengan masalah DNS atau konektivitas - pada kenyataannya, koneksi TCP dibuat dengan cepat; itu adalah respons HTTP yang terlalu lama, seperti yang dapat dilihat dari pengambilan paket sampel berikut:

      1 0.000000000 192.168.1.101 -> 66.193.37.204 TCP 66 41518 > http [SYN] Seq=0 Win=13600 Len=0 MSS=1360 SACK_PERM=1 WS=16
      2 0.205708000 66.193.37.204 -> 192.168.1.101 TCP 66 http > 41518 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1440 SACK_PERM=1 WS=128
      3 0.205759000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=1 Ack=1 Win=13600 Len=0
      4 0.205846000 192.168.1.101 -> 66.193.37.204 HTTP 158 GET /packages/hackage.html HTTP/1.1 
      5 0.406461000 66.193.37.204 -> 192.168.1.101 TCP 54 http > 41518 [ACK] Seq=1 Ack=105 Win=5888 Len=0
      6 28.433860000 66.193.37.204 -> 192.168.1.101 TCP 1494 [TCP segment of a reassembled PDU]
      7 28.433904000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=105 Ack=1441 Win=16480 Len=0
      8 28.434211000 66.193.37.204 -> 192.168.1.101 HTTP 1404 HTTP/1.1 200 OK  (text/html)
      9 28.434228000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=105 Ack=2791 Win=19360 Len=0
     10 28.434437000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [FIN, ACK] Seq=105 Ack=2791 Win=19360 Len=0
     11 28.635146000 66.193.37.204 -> 192.168.1.101 TCP 54 http > 41518 [FIN, ACK] Seq=2791 Ack=106 Win=5888 Len=0
     12 28.635191000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=106 Ack=2792 Win=19360 Len=0
    

    ( paket capture dalam format pcap-ng ). Capture ini menunjukkan apa yang terjadi selama proses sederhana curl http://hackage.haskell.org/packages/hackage.html.

Itu juga tidak masalah bahwa saya di belakang router - itu sama ketika saya terhubung secara langsung. Jenis koneksi adalah PPPoE.

Saya mereproduksi masalah pada 3 komputer yang menjalankan Linux dan Windows.

Bagaimana cara mendiagnosis masalah seperti itu?

Roman Cheplyaka
sumber
Hai, saya pikir Anda perlu menggunakan browser dengan alat pengembang yang diaktifkan untuk melihat dialog level HTTP daripada dialog level IP. Kita perlu melihat apa yang menyebabkan keterlambatan dan Anda hanya dapat melakukan ini dengan melihat set total interaksi HTTP untuk halaman. Sebagai gantinya, Anda bisa menggunakan GMetrix .
Julian Knight
Menjalankan GMetrix di situs memberi saya hasil yang cukup baik dengan beberapa ekspektasi signifikan yang mungkin mengarahkan Anda ke arah yang benar.
Julian Knight
@JulianKnight: ada tautan ke file tangkap lengkap dalam pertanyaan - ia memiliki semua informasi
Roman Cheplyaka
Tautan Anda adalah PCAP, saya merujuk pada sesuatu yang jauh lebih tinggi. Silakan laporkan kembali menggunakan analisis pengembang berbasis browser atau GMetrix atau keduanya.
Julian Knight
1
@JulianKnight: izinkan saya ulangi - CSS tidak relevan di sini, dan kita berbicara tentang penundaan 30 detik untuk satu permintaan HTTP.
Roman Cheplyaka

Jawaban:

5

"30 detik" dan "setelah dua menit" adalah dering mati untuk masalah DNS bagi saya.

Jika kami mengira bahwa halaman yang Anda sambungkan melakukan sesuatu seperti permintaan DNS pada IP yang terhubung, dan permintaan itu gagal karena beberapa alasan, Anda akan melihat:

  • Koneksi TCP hampir seketika karena server tidak melakukan pemeriksaan DNS
  • skrip menjalankan kueri DNS dan macet .
  • setelah 30 detik batas waktu default berakhir dan skrip berjalan (Anda sekarang "Tidak Dikenal")
  • pada kueri berikutnya, hit DNS negatif masih di-cache dan tahap 1 dilewatkan begitu saja
  • setelah batas waktu negatif berakhir (RFC 2308), dan itu berkisar antara 2 dan 5 menit, kueri baru dikeluarkan pada tautan berikutnya, dan cerita berulang.

... dan ini persis gejala yang Anda gambarkan.

Anda bisa mencoba menjalankan permintaan DNS dari ISP lain (katakanlah, ISP2) pada IP yang Anda dapatkan dari ISP1. Ini bukan 100% bukti, tapi saya berharap kemungkinan tinggi bahwa kueri akan selesai 30 detik. Itu berarti bahwa server DNS ISP1 mengalami masalah dalam menjawab pertanyaan dari luar .

Penyebab lain yang mungkin adalah DNS ISP1 yang dihadang oleh Hackage untuk beberapa alasan (kemungkinan salah) (dalam pakaian saya , alasannya adalah "netadmin yang memicu trigger", dan saya dapat menyebutkan nama). Dalam hal ini Anda akan mengalami kesulitan mendiagnosis, karena tes apa pun melalui ISP2 tidak akan menghasilkan apa pun yang tidak biasa; Anda harus meningkatkan ini ke Hackage.

LSerni
sumber
Ini terlihat sangat masuk akal! Biarkan saya memverifikasinya.
Roman Cheplyaka
Untuk penyebab pertama, saya mencoba haskell menggunakan proxy anonim dan itu cepat, yang mungkin menunjukkan bahwa penyebab ini tidak mungkin. Untuk yang kedua, jeda yang sama kemudian diharapkan ketika mengakses haskell dari ISP mana pun, jadi itu juga tidak mungkin. DNS mungkin masih menjadi penyebabnya, tetapi mungkin lebih rumit untuk dijelaskan.
harrymc
@harrymc: sebenarnya sangat sederhana. Server DNS ISP saya yang bertanggung jawab untuk membalikkan DNS sedang down. Jadi, usahakan untuk melakukan reverse resolving time out. Coba ini: dig +trace -x 80.90.233.38. Saya 95% yakin bahwa ini penyebabnya, hanya menunggu konfirmasi bahwa peretasan memang melakukan pencarian DNS terbalik.
Roman Cheplyaka
0

Masalah terdengar seperti masalah dengan "MTU". Jika Anda google "windows setting mtu" Anda harus datang dengan sejumlah tanggapan yang akan menunjukkan kepada Anda bagaimana menguji teori ini, dan menurunkan MTU Anda yang sesuai. (Jika Anda menggunakan router Linux saya bisa menghasilkan perintah IPTables untuk melakukan ini secara dinamis untuk Anda, tetapi saya tidak "melakukan" Windows.)

davidgo
sumber
Menurut panduan Wireshark, "Segmen TCP dari PDU yang dipasang kembali" sebenarnya tidak sesuai dengan fragmentasi IP tetapi lebih menunjukkan bahwa respons secara valid berisi beberapa paket seperti yang Anda harapkan dari halaman web.
Julian Knight
Sepertinya bukan MTU. Saya menguji ini dengan menghubungkan langsung melalui ethernet dan pengaturan mtu ke 1000. Masalahnya masih ada.
Roman Cheplyaka
0

Saya telah mengulangi penangkapan paket Anda, yang terlihat seperti ini pada saya:

ambil gambar

Secara efektif ada jeda kecil yang tidak terdeteksi saat paket dipasang kembali, tetapi tidak ada tempat selama Anda. Saya juga telah memverifikasi semua alamat IP dan HTML, dan semuanya benar dan terlihat sangat sederhana dan tidak berbahaya.

Singkatnya, tidak ada alasan untuk keterlambatan ini, sejauh menyangkut Internet. Kesimpulannya adalah bahwa ada masalah dengan ISP Anda.

Apa yang dapat Anda lakukan untuk mempersempit kemungkinan adalah:

  1. Coba sambungkan ke paket haskell.org lain dan lihat apakah ada penundaan serupa
  2. Coba gunakan router lain dari tempat Anda dengan beberapa komputer menggunakan adapter jaringan yang berbeda
  3. Cobalah untuk meminta seseorang di daerah Anda yang menggunakan ISP yang sama mengulangi koneksi
  4. Cobalah untuk meminta seseorang di daerah Anda yang menggunakan ISP lain mengulangi koneksi
  5. Dengan informasi ini, jika Anda masih belum memiliki penjelasan untuk keterlambatan ini, hubungi Dukungan ISP Anda untuk menanyakan apa yang terjadi.

[EDIT]

Saya perhatikan bahwa haskell.org mengirimkan ETag , jadi itu menjelaskan mengapa akses pertama lambat tetapi yang berikutnya cepat: Karena selama ETag valid, halaman sebenarnya berasal dari cache browser Anda.

Bagian yang aneh di sini adalah mengapa ISP tidak lambat saat mengirimkan permintaan ETag. Penjelasan mungkin bahwa untuk waktu yang terbatas mereka memenuhi permintaan dari cache mereka sendiri, daripada pergi ke haskell.org.

harrymc
sumber
1. Ini sama untuk semua halaman peretasan. 2. Seperti yang saya katakan, saya mencoba ini di beberapa komputer dan dengan beberapa router (dan tanpa satu). 4. Masalahnya tidak ada jika saya menggunakan ISP lain di daerah saya.
Roman Cheplyaka
Sekarang, masalah ISP memang terlihat seperti satu-satunya solusi yang masuk akal, tetapi masalah seperti apa itu? Mereka mungkin bahkan tidak curiga tentang keberadaan peretasan, sehingga tidak bisa disengaja. Jika saya memberi tahu mereka, "hei, situs yang satu ini tidak berfungsi untuk saya (tetapi yang lainnya melakukannya)", mereka tidak akan mendengarkan.
Roman Cheplyaka
Saya menambahkan penjelasan di atas mengapa hanya akses pertama yang lambat. Butir 3 masih membutuhkan jawaban sebelum berbicara dengan ISP. Masalah mereka mungkin terkait dengan perangkat lunak keamanan yang mereka gunakan, karena beberapa alasan sangat lambat untuk memeriksa validitas haskell.org.
harrymc
Etag tidak relevan, karena saya menggunakan curl untuk pengujian. Bagaimanapun, jawaban tentang reverse dns kemungkinan besar adalah jawaban yang benar.
Roman Cheplyaka
-2

Kedengarannya seperti masalah server. Ini dimuat cepat untukku. Untuk menguji apakah server tidak menyukai Anda, cobalah mengaksesnya dari proxy, seperti TOR atau HideMyAss.com. Jika cepat, maka ada masalah antara haskell.org dan rumah Anda.

Tes lain yang dapat Anda jalankan adalah menemukan sumber daya pada pandangan itu seperti file HTML, file CSS, atau file XML, dan meneruskan tautan itu ke validator HTML, dll. Jika layanan pihak ke-3 membutuhkan waktu lama untuk mengambil, maka itu masalah dengan server.

Tes lain: kosongkan cache DNS Anda. Bisa jadi mencari alamat IP haskell.org membutuhkan waktu lama. ipconfig /flushdns. Coba juga ping hackage.haskell.orgdari baris perintah untuk melihat berapa lama waktu yang dibutuhkan untuk mencari alamat IP.

Tes lain: buka sesi penelusuran pribadi dengan Chrome (dan lainnya) untuk menghindari pengiriman cookie.

Tes lain: Buka F12 di Chrome atau Opera, buka tab Network, lalu buka situs untuk melihat waktu untuk setiap sumber daya.

Chloe
sumber
Saat menggunakan proxy, masalahnya hilang. Saran Anda yang lain sudah dibahas dalam pertanyaan itu sendiri.
Roman Cheplyaka
Server tidak menyukai Anda. Ini membatasi IP Anda untuk alasan apa pun. Tidak ada yang bisa anda lakukan.
Chloe