Menghubungkan dari luar Amazon EC2—masalah batas waktu Firewall - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menghubungkan dari luar Amazon EC2—masalah batas waktu Firewall

Contoh masalah

Koneksi klien Anda ke database tampak hang atau batas waktu saat menjalankan kueri panjang, seperti perintah COPY. Dalam kasus ini, Anda mungkin mengamati bahwa konsol Amazon Redshift menampilkan bahwa kueri telah selesai, tetapi alat klien itu sendiri tampaknya masih menjalankan kueri. Hasil kueri mungkin hilang atau tidak lengkap tergantung kapan koneksi berhenti.

Solusi yang mungkin

Masalah ini terjadi saat Anda terhubung ke Amazon Redshift dari mesin selain instans Amazon EC2. Dalam hal ini, koneksi idle diakhiri oleh komponen jaringan perantara, seperti firewall, setelah periode tidak aktif. Perilaku ini khas ketika Anda masuk dari jaringan pribadi virtual (VPN) atau jaringan lokal Anda.

Untuk menghindari batas waktu ini, kami merekomendasikan perubahan berikut:

  • Tingkatkan nilai sistem klien yang berhubungan dengan batas waktu TCP/IP. Buat perubahan ini di komputer yang Anda gunakan untuk terhubung ke cluster Anda. Periode batas waktu harus disesuaikan untuk klien dan jaringan Anda. Untuk informasi selengkapnya, lihat Ubah pengaturan batas waktu TCP/IP.

  • Secara opsional, atur perilaku keepalive di tingkat DSN. Untuk informasi selengkapnya, lihat Ubah pengaturan batas waktu DSN.

Ubah pengaturan batas waktu TCP/IP

Untuk mengubah pengaturan batas waktu TCP/IP, konfigurasikan pengaturan batas waktu sesuai dengan sistem operasi yang Anda gunakan untuk terhubung ke cluster Anda.

  • Linux — Jika klien Anda berjalan di Linux, jalankan perintah berikut sebagai pengguna root untuk mengubah pengaturan batas waktu untuk sesi saat ini:

    /sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5

    Untuk mempertahankan pengaturan, membuat atau memodifikasi file /etc/sysctl.conf dengan nilai-nilai berikut kemudian reboot sistem Anda.

    net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5
  • Windows — Jika klien Anda berjalan pada Windows, edit nilai untuk pengaturan registri berikut di bawah HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControl Set\ Services\ Tcpip\ Parameters\:

    • KeepAliveWaktu: 30000

    • KeepAliveInterval: 1000

    • TcpMaxDataRetransmissions: 10

    Pengaturan ini menggunakan tipe data DWORD. Jika tidak ada di bawah jalur registri, Anda dapat membuat pengaturan dan menentukan nilai yang disarankan ini. Untuk informasi lebih lanjut tentang mengedit registri Windows, lihat dokumentasi Windows.

    Setelah Anda menetapkan nilai-nilai ini, restart komputer Anda agar perubahan diterapkan.

  • Mac - Jika klien Anda berjalan di Mac, jalankan perintah berikut untuk mengubah pengaturan batas waktu untuk sesi saat ini:

    sudo sysctl net.inet.tcp.keepintvl=200000 sudo sysctl net.inet.tcp.keepidle=200000 sudo sysctl net.inet.tcp.keepinit=200000 sudo sysctl net.inet.tcp.always_keepalive=1

    Untuk mempertahankan pengaturan, membuat atau memodifikasi file /etc/sysctl.conf dengan nilai-nilai berikut:

    net.inet.tcp.keepidle=200000 net.inet.tcp.keepintvl=200000 net.inet.tcp.keepinit=200000 net.inet.tcp.always_keepalive=1

    Nyalakan kembali komputer Anda, lalu jalankan perintah berikut untuk memverifikasi bahwa nilainya ditetapkan.

    sysctl net.inet.tcp.keepidle sysctl net.inet.tcp.keepintvl sysctl net.inet.tcp.keepinit sysctl net.inet.tcp.always_keepalive

Ubah pengaturan batas waktu DSN

Anda dapat mengatur perilaku keepalive di tingkat DSN jika Anda mau. Anda melakukan ini dengan menambahkan atau memodifikasi parameter berikut dalam file odbc.ini:

KeepAlivesHitung

Jumlah paket TCP keepalive yang dapat hilang sebelum koneksi dianggap rusak.

KeepAlivesMenganggur

Jumlah detik tidak aktif sebelum driver mengirim paket TCP keepalive.

KeepAlivesInterval

Jumlah detik antara setiap transmisi ulang TCP keepalive.

Pada Windows, Anda memodifikasi parameter ini di registri dengan menambahkan atau mengubah kunci di HKEY_LOCAL_MACHINE\ SOFTWARE\ ODBC\ ODBC.INI\ Your_DSN. Di Linux dan macOS, Anda menambahkan atau memodifikasi parameter ini di entri DSN target langsung di file odbc.ini. Untuk informasi selengkapnya tentang memodifikasi file odbc.ini di komputer Linux dan macOS, lihat. Gunakan pengelola driver ODBC untuk mengonfigurasi driver di sistem operasi Linux dan macOS X

Jika parameter ini tidak ada, atau jika mereka memiliki nilai 0, sistem menggunakan parameter keepalive yang ditentukan untuk TCP/IP untuk menentukan perilaku DSN keepalive. Di Windows, Anda dapat menemukan parameter TCP/IP di registri di. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ Di Linux dan macOS, Anda dapat menemukan parameter TCP/IP dapat ditemukan di file sysctl.conf.