Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah koneksi di Amazon Redshift
Jika Anda memiliki masalah dengan menghubungkan ke cluster Anda dari alat klien SQL, ada beberapa hal yang dapat Anda periksa untuk mempersempit masalah. Jika Anda menggunakan SSL atau sertifikat server, pertama-tama hapus kompleksitas ini saat Anda memecahkan masalah koneksi. Kemudian tambahkan ini kembali ketika Anda telah menemukan solusi. Untuk informasi selengkapnya, lihat Mengkonfigurasi opsi keamanan untuk koneksi.
Untuk informasi tentang perubahan perilaku dalam fungsionalitas Amazon Redshift yang dapat memengaruhi aplikasi Anda, lihatPerubahan perilaku di Amazon Redshift.
penting
Amazon Redshift telah mengubah cara pengelolaan sertifikat SSL. Jika Anda mengalami kesulitan menyambung menggunakan SSL, Anda mungkin perlu memperbarui sertifikat CA root kepercayaan saat ini. Untuk informasi selengkapnya, lihat Transisi ke sertifikat ACM untuk koneksi SSL.
Bagian berikut memiliki beberapa contoh pesan kesalahan dan kemungkinan solusi untuk masalah koneksi. Karena alat klien SQL yang berbeda memberikan pesan kesalahan yang berbeda, ini bukan daftar lengkap, tetapi harus menjadi titik awal yang baik untuk memecahkan masalah.
Menghubungkan dari luar Amazon EC2 dan mengalami masalah batas waktu firewall
Koneksi klien Anda ke database tampaknya macet atau habis waktu saat menjalankan kueri panjang, seperti perintah COPY. Dalam hal 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 memungkinkan
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 TCP/IP waktu. Buat perubahan ini pada komputer yang Anda gunakan untuk terhubung ke cluster Anda. Periode batas waktu harus disesuaikan untuk klien dan jaringan Anda. Untuk informasi selengkapnya, lihat Ubah TCP/IP pengaturan batas waktu.
-
Secara opsional, atur perilaku keepalive di tingkat DSN. Untuk informasi selengkapnya, lihat Ubah pengaturan batas waktu DSN.
Ubah TCP/IP pengaturan batas waktu
Untuk mengubah TCP/IP pengaturan batas waktu, konfigurasikan pengaturan batas waktu sesuai dengan sistem operasi yang Anda gunakan untuk menyambung 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=5Untuk mempertahankan pengaturan, buat atau ubah file
/etc/sysctl.confdengan nilai-nilai berikut lalu 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 di Windows, edit nilai untuk pengaturan registri berikut di bawah HKEY_LOCAL_MACHINE\ SYSTEM\\ Services\ TcpipCurrentControlSet\ Parameters\:
-
KeepAliveTime: 30000
-
KeepAliveInterval: 1000
-
TcpMaxDataRetransmissions: 10
Pengaturan ini menggunakan tipe data DWORD. Jika mereka tidak ada di bawah jalur registri, Anda dapat membuat pengaturan dan menentukan nilai-nilai yang disarankan ini. Untuk informasi selengkapnya tentang mengedit registri Windows, lihat dokumentasi Windows.
Setelah Anda menetapkan nilai-nilai ini, nyalakan ulang 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=1Untuk mempertahankan pengaturan, buat atau ubah file
/etc/sysctl.confdengan nilai-nilai berikut:net.inet.tcp.keepidle=200000 net.inet.tcp.keepintvl=200000 net.inet.tcp.keepinit=200000 net.inet.tcp.always_keepalive=1Nyalakan ulang komputer Anda, lalu jalankan perintah berikut untuk memverifikasi bahwa nilai-nilai 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 memilih. Anda melakukan ini dengan menambahkan atau memodifikasi parameter berikut dalam file odbc.ini:
- KeepAlivesCount
-
Jumlah paket TCP keepalive yang dapat hilang sebelum koneksi dianggap rusak.
- KeepAlivesIdle
-
Jumlah detik tidak aktif sebelum pengemudi mengirimkan paket TCP keepalive.
- KeepAlivesInterval
-
Jumlah detik antara setiap transmisi ulang TCP keepalive.
Jika parameter ini tidak ada, atau jika mereka memiliki nilai 0, sistem menggunakan parameter keepalive yang ditentukan TCP/IP untuk menentukan perilaku DSN keepalive. Di Windows, Anda dapat menemukan TCP/IP parameter di registri diHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\. Di Linux dan macOS, Anda dapat menemukan TCP/IP parameter dapat ditemukan di file sysctl.conf.
Koneksi ditolak atau gagal
Ketika koneksi Anda ditolak atau gagal, Anda mungkin menerima kesalahan yang mirip dengan salah satu dari berikut ini.
-
“Gagal membuat koneksi ke
<endpoint>.” -
“Tidak dapat terhubung ke server: Waktu koneksi habis. Apakah server berjalan di host
'<endpoint>'dan menerima TCP/IP koneksi di port'<port>'?” -
“Koneksi ditolak. Periksa apakah nama host dan port sudah benar dan bahwa postmaster menerima TCP/IP koneksi.”
Solusi yang memungkinkan
Umumnya, ketika Anda menerima pesan kesalahan yang menunjukkan bahwa ada kegagalan untuk membuat koneksi, itu adalah masalah dengan izin untuk mengakses cluster atau dengan lalu lintas jaringan yang mencapai cluster.
Untuk menyambung ke cluster dari alat klien di luar jaringan tempat cluster berada, Anda menambahkan aturan masuk ke grup keamanan cluster. Konfigurasi aturan tergantung pada apakah cluster Amazon Redshift dibuat di cloud pribadi virtual (VPC):
-
Jika Anda membuat cluster Amazon Redshift di cloud pribadi virtual (VPC) berdasarkan Amazon VPC, tambahkan aturan masuk ke grup keamanan VPC yang menentukan CIDR/IP alamat klien, di Amazon VPC. Untuk informasi selengkapnya tentang mengonfigurasi grup keamanan VPC untuk cluster Anda dan opsi yang dapat diakses publik, lihatSumber daya Redshift dalam VPC.
-
Jika Anda membuat cluster Amazon Redshift di luar VPC, tambahkan CIDR/IP alamat klien Anda ke grup keamanan cluster di Amazon Redshift. Untuk informasi selengkapnya tentang mengonfigurasi grup keamanan cluster, lihatGrup keamanan Amazon Redshift.
Jika Anda mencoba menyambung ke cluster dari alat klien yang berjalan pada instans Amazon EC2, Anda juga menambahkan aturan masuk. Dalam hal ini, tambahkan aturan ke grup keamanan cluster. Aturan harus menentukan grup keamanan Amazon EC2 yang terkait dengan instans Amazon EC2 alat klien.
Dalam beberapa kasus, Anda mungkin memiliki lapisan antara klien dan server Anda, seperti firewall. Dalam kasus ini, pastikan firewall menerima koneksi masuk melalui port yang Anda konfigurasikan untuk cluster Anda.
Klien dan driver tidak kompatibel
Jika klien dan driver Anda tidak kompatibel, Anda mungkin menerima kesalahan yang mengatakan, “DSN yang ditentukan berisi ketidakcocokan arsitektur antara Driver dan Aplikasi.”
Solusi yang memungkinkan
Saat Anda mencoba menghubungkan dan mendapatkan kesalahan tentang ketidakcocokan arsitektur, ini berarti bahwa alat klien dan driver tidak kompatibel. Ini terjadi karena arsitektur sistem mereka tidak cocok. Misalnya, ini dapat terjadi jika Anda memiliki alat klien 32-bit tetapi telah menginstal driver versi 64-bit. Terkadang alat klien 64-bit dapat menggunakan driver 32-bit, tetapi Anda tidak dapat menggunakan aplikasi 32-bit dengan driver 64-bit. Pastikan driver dan alat klien menggunakan versi arsitektur sistem yang sama.
Kueri tampak hang dan terkadang gagal mencapai cluster
Anda mengalami masalah dengan penyelesaian kueri, di mana kueri tampaknya berjalan tetapi hang di alat klien SQL. Terkadang kueri gagal muncul di cluster, seperti di tabel sistem atau konsol Amazon Redshift.
Solusi yang memungkinkan
Masalah ini dapat terjadi karena paket drop. Dalam hal ini, ada perbedaan dalam ukuran unit transmisi maksimum (MTU) di jalur jaringan antara dua host Internet Protocol (IP). Ukuran MTU menentukan ukuran maksimum, dalam byte, dari paket yang dapat ditransfer dalam satu bingkai Ethernet melalui koneksi jaringan. Di AWS, beberapa jenis instans Amazon EC2 mendukung MTU 1500 (bingkai Ethernet v2) dan jenis instans lainnya mendukung MTU 9001 (bingkai TCP/IP jumbo).
Untuk menghindari masalah yang dapat terjadi dengan perbedaan ukuran MTU, sebaiknya lakukan salah satu hal berikut:
-
Jika cluster Anda menggunakan EC2-VPC platform, konfigurasikan grup keamanan Amazon VPC dengan aturan Protokol Pesan Kontrol Internet (ICMP) kustom masuk yang kembali.
Destination UnreachableAturan dengan demikian menginstruksikan host asal untuk menggunakan ukuran MTU terendah di sepanjang jalur jaringan. Untuk detail tentang pendekatan ini, lihatMengkonfigurasi grup keamanan untuk mengizinkan ICMP “tujuan tidak dapat dijangkau”. -
Jika cluster Anda menggunakan EC2-Classic platform, atau Anda tidak dapat mengizinkan aturan inbound ICMP, nonaktifkan frame TCP/IP jumbo sehingga frame Ethernet v2 digunakan. Untuk detail tentang pendekatan ini, lihatMengonfigurasi MTU suatu instance.
Mengkonfigurasi grup keamanan untuk mengizinkan ICMP “tujuan tidak dapat dijangkau”
Ketika ada perbedaan ukuran MTU di jaringan antara dua host, pertama-tama pastikan bahwa pengaturan jaringan Anda tidak memblokir jalur penemuan MTU (PMTUD). PMTUD memungkinkan host penerima untuk merespons host asal dengan pesan ICMP berikut:. Destination Unreachable: fragmentation
needed and DF set (ICMP Type 3, Code 4) Pesan ini menginstruksikan host asal untuk menggunakan ukuran MTU terendah di sepanjang jalur jaringan untuk mengirim ulang permintaan. Tanpa negosiasi ini, paket drop dapat terjadi karena permintaan terlalu besar untuk diterima oleh host penerima. Untuk informasi selengkapnya tentang pesan ICMP ini, kunjungi RFC792
Jika Anda tidak mengonfigurasi aturan masuk ICMP ini secara eksplisit untuk grup keamanan Amazon VPC Anda, PMTUD akan diblokir. Di dalam AWS, grup keamanan adalah firewall virtual yang menentukan aturan untuk lalu lintas masuk dan keluar ke instance. Untuk informasi tentang grup keamanan cluster Amazon Redshift, lihatGrup keamanan Amazon Redshift. Untuk cluster yang menggunakan EC2-VPC platform, Amazon Redshift menggunakan grup keamanan VPC untuk mengizinkan atau menolak lalu lintas ke cluster. Secara default, grup keamanan dikunci dan menolak semua lalu lintas masuk. Untuk informasi tentang cara menyetel aturan masuk dan keluar untuk EC2-VPC instans EC2-Classic atau, lihat Perbedaan antara instans dalam EC2-Classic dan VPC di Panduan Pengguna Amazon EC2.
Untuk informasi selengkapnya tentang cara menambahkan aturan ke grup keamanan VPC, lihatGrup keamanan VPC. Untuk informasi selengkapnya tentang pengaturan PMTUD tertentu yang diperlukan dalam aturan ini, lihat Penemuan P ath MTU di Panduan Pengguna Amazon EC2.
Mengonfigurasi MTU suatu instance
Dalam beberapa kasus, cluster Anda mungkin menggunakan EC2-Classic platform atau Anda tidak dapat mengizinkan aturan ICMP khusus untuk lalu lintas masuk. Dalam kasus ini, kami sarankan Anda menyesuaikan MTU ke 1500 pada antarmuka jaringan (NIC) instans EC2 tempat Anda menyambungkan ke cluster Amazon Redshift Anda. Penyesuaian ini menonaktifkan bingkai TCP/IP jumbo untuk memastikan bahwa koneksi secara konsisten menggunakan ukuran paket yang sama. Namun, opsi ini mengurangi throughput jaringan maksimum Anda untuk instans sepenuhnya, bukan hanya untuk koneksi ke Amazon Redshift. Untuk informasi selengkapnya, lihat prosedur berikut ini.
Untuk mengatur MTU pada sistem operasi Microsoft Windows
Jika klien Anda berjalan di sistem operasi Microsoft Windows, Anda dapat meninjau dan mengatur nilai MTU untuk adaptor Ethernet dengan menggunakan netsh perintah.
-
Jalankan perintah berikut untuk menentukan nilai MTU saat ini:
netsh interface ipv4 show subinterfaces -
Tinjau
MTUnilai untukEthernetadaptor dalam output. -
Jika nilainya tidak
1500, jalankan perintah berikut untuk mengaturnya:netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistentSetelah Anda menetapkan nilai ini, mulai ulang komputer Anda agar perubahan diterapkan.
Untuk mengatur MTU pada sistem operasi Linux
Jika klien Anda berjalan di sistem operasi Linux, Anda dapat meninjau dan mengatur nilai MTU dengan menggunakan ip perintah.
-
Jalankan perintah berikut untuk menentukan nilai MTU saat ini:
$ ip link show eth0 -
Tinjau nilai berikut
mtudalam output. -
Jika nilainya tidak
1500, jalankan perintah berikut untuk mengaturnya:$ sudo ip link set dev eth0 mtu 1500
Untuk mengatur MTU pada sistem operasi Mac
-
Ikuti petunjuk di situs dukungan macOS tentang
How to change the MTU for troubleshooting purposes. Untuk informasi lebih lanjut, cari situs dukungan.
Mengatur parameter ukuran pengambilan JDBC
Secara default, driver Redshift JDBC menggunakan buffer cincin untuk mengelola memori secara efisien dan mencegah kesalahan kehabisan memori. Parameter ukuran fetch hanya berlaku ketika buffer cincin dinonaktifkan secara eksplisit. Untuk informasi lebih lanjut, tinjau tautannya. Dalam konfigurasi ini, Anda harus mengatur ukuran pengambilan untuk mengontrol berapa banyak baris yang diambil di setiap batch.
Kapan Menggunakan Ukuran Fetch?
Gunakan parameter ukuran fetch saat:
-
Anda memerlukan kontrol halus atas batching berbasis baris
-
Bekerja dengan aplikasi lama yang memerlukan perilaku ukuran pengambilan tradisional
Mengatur Ukuran Fetch
Ketika buffer dering dinonaktifkan, driver JDBC mengumpulkan semua hasil untuk kueri pada satu waktu secara default. Kueri yang mengembalikan set hasil besar dapat menghabiskan memori yang berlebihan. Untuk mengambil set hasil dalam batch alih-alih sekaligus, atur parameter ukuran pengambilan JDBC di aplikasi Anda.
catatan
Ukuran pengambilan tidak didukung untuk ODBC.
Untuk kinerja terbaik, atur ukuran pengambilan ke nilai tertinggi yang tidak menyebabkan kesalahan kehabisan memori. Nilai ukuran fetch yang lebih rendah menghasilkan lebih banyak perjalanan server, yang memperpanjang waktu eksekusi. Server menyimpan sumber daya, termasuk slot kueri WLM dan memori terkait, sampai klien mengambil seluruh kumpulan hasil atau kueri dibatalkan. Saat Anda menyetel ukuran pengambilan dengan tepat, sumber daya tersebut dilepaskan lebih cepat, membuatnya tersedia untuk kueri lain.
catatan
Jika Anda perlu mengekstrak kumpulan data besar, sebaiknya gunakan pernyataan UNLOAD untuk mentransfer data ke Amazon S3. Saat Anda menggunakan UNLOAD, node komputasi bekerja secara paralel untuk mempercepat transfer data.
Untuk informasi selengkapnya tentang pengaturan parameter ukuran pengambilan JDBC, buka Mendap atkan hasil berdasarkan kursor