মাইএসকিউএল: যোগাযোগের প্যাকেট পড়তে ত্রুটি


14

আমি এই সতর্কতাটি মাইএসকিএলে পেয়েছি,

[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)

আমি গুগলে কয়েকটি বিষয় নিয়ে এসেছি এবং কিছু পরামর্শ অনুসারে আমি এখনও একই আচরণ max_allowed_packetথেকে বাড়িয়েছি 128 to 512 to 1024

আমি Drupal এর 7 ব্যবহার করছি, এবং হ্যা সেখানে ফোঁটা ধরনের তথ্য প্রচুর আছে, কিন্তু 1024 Mbএর max_allowed_packetআমার মতে যথেষ্ট হওয়া উচিত।

এই সতর্কতাটি কীভাবে কাটিয়ে উঠতে হবে?

সম্পাদনা করুন:

@ রোল্যান্ডোর পরামর্শ / উত্তর হিসাবে কিছু সেটিংস যুক্ত করা হয়েছে, আমি এখনও একই সতর্কতা পেয়েছি।

আমার মাইএসকিএল কনফিগারেশনটি এর মতো দেখাচ্ছে:

[client]
port        = 3306
socket      = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K 
max_allowed_packet = 1024M 
table_open_cache = 128 
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 192K
# Query cache disabled
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 100
thread_concurrency = 10
tmp_table_size = 128M
max_heap_table_size = 128M
log_error                = /var/log/mysql/mysql-error.log
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2

log_warnings = 2

server-id   = 1
binlog-format = row
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
log_bin = mysql-bin
log-slave-updates
relay-log=mysqld-relay-bin
expire_logs_days        = 10
max_binlog_size         = 100M

innodb_data_home_dir = /var/db/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/db/mysql
innodb_buffer_pool_size = 8G
character-set-server = utf8
#innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 2047M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DIRECT

[mysqldump]
quick
quote-names
max_allowed_packet = 16M
default-character-set = utf8

[mysql]
default-character-set = utf8

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 32M

[mysqlhotcopy]
interactive-timeout

[mysqld_save]
syslog

আমার অ্যাপ্লিকেশনটি কেবল ইনোডিবি ব্যবহার করে তবে মাইএসকিএল-এর মতো কয়েকটি ডাটাবেস পাওয়া যায়, যা মাইএসএএমএল ইঞ্জিনের সাহায্যে কেবল মাইএসএইচএল ইনস্টলেশন ব্যবহার করে, আমি অনুমান করি যে এটি আমার উদ্বেগের বিষয় নয়।

আপনি দেখতে পাচ্ছেন যে আমারও প্রতিলিপি রয়েছে, সতর্কতাটি প্রতিলিপি করা সার্ভারেও একই রকম, যার কনফিগারেশনটি এইরকম।


আপনার সমস্ত টেবিল কি InnoDB?
RolandoMySQLDBA

@ রোল্যান্ডোমাইএসকিউএলডিবিএ, হাই, হ্যাঁ সমস্ত টেবিলগুলি ইনডোডব, আমি এই ওয়েবসাইটে এই জাতীয় কিছু প্রশ্নে আপনার উত্তর অনুসারে করেছি, তবে আমি এখনও সতর্কতা পেয়েছি।

@ রোল্যান্ডোমাইএসকিউএলডিবিএ, আমি আমার প্রশ্নটি সম্পাদনা করেছি এবং আপনি যা বলেছিলেন তা করেছি, এখনও আমি সেই সতর্কতা পাচ্ছি। আমার এখানে mysql.cnf আছে, আপনি কি দয়া করে এটি একবার দেখুন, আমি কিছু অনুপস্থিত হতে পারি

আমি এই ত্রুটিটি মাইএসকিউএল 5.5.35 এ ড্রুপাল 6 দিয়ে পেতে শুরু করেছি never সমস্যাটি আমি কখনই বুঝতে পারি নি তবে এটি আপগ্রেড হয়ে 5.7.7 এ চলে গেছে। এখন এটি 5.7.9 দিয়ে ফিরে এসেছে। আমি একটি সন্নিবেশ ক্যোয়ারী (পাঠ্যের 6000 বর্ণের কম) আলাদা করে রেখেছি যা 5.7.7 এ সফল হয় তবে 5.7.9 এ গর্ভপাত বন্ধ করে দেয়। এটি কেবলমাত্র স্থানীয়ভাবে নয়, দূরবর্তীভাবে কার্যকর হলে ব্যর্থ হয়। সুতরাং, একই ক্লায়েন্ট, একই মেশিনে পাশাপাশি চলমান সার্ভারের উভয় সংস্করণ, একই স্কেল_মোড, একই অক্ষর সেট, বিশাল ম্যাক্স_নিয়েলড_প্যাককেট। আমি শিয়াল। আপনি কি কখনও এই সমাধান করেছেন?
ব্যবহারকারী 19292

উত্তর:


10

আমি আনন্দিত যে আপনি বলেছিলেন যে আপনার সমস্ত ডেটা ইনোডিবি তাই আমি নিম্নরূপ উত্তর দিতে পারব: যদি ম্যাক্স_গ্রেড_প্যাক্টটি 1 জি এ সর্বাধিক আউট হয় এবং আপনার এখনও সমস্যা হয় তবে দেখার জন্য কেবল দুটি জায়গা রয়েছে:

  1. ইনোডব_লগ_বাফলার_সাইজ : ইনোডিবি ডিস্কের লগ ফাইলগুলিতে লেখার জন্য যে বাফারের আকার ব্যবহার করে। ডিফল্ট মান 8MB। একটি বড় লগ বাফার লেনদেনগুলি করার আগে ডিস্কে লগ লেখার প্রয়োজন ছাড়াই বড় লেনদেনগুলি পরিচালনা করতে সক্ষম করে। সুতরাং, আপনার যদি বড় লেনদেন হয় তবে লগ বাফারকে আরও বড় করে ডিস্ক I / O সংরক্ষণ করে।
  2. innodb_log_file_size : লগ গ্রুপে প্রতিটি লগ ফাইলের বাইট আকার। লগ ফাইলগুলির সম্মিলিত আকার 4GB এর কম হওয়া উচিত। ডিফল্ট মান 5MB। সংবেদনশীল মানগুলি বাফার পুলের আকারের 1MB থেকে 1 / N-th অবধি, যেখানে এন গ্রুপে লগ ফাইলের সংখ্যা। মানটি যত বড়, বাফার পুলে কম চেকপয়েন্ট ফ্লাশ ক্রিয়াকলাপ প্রয়োজন, সংরক্ষণ ডিস্ক I / O। তবে বৃহত্তর লগ ফাইলগুলিও বোঝায় যে ক্রাশের ক্ষেত্রে পুনরুদ্ধারটি ধীর।

আমি প্রায় 2 বছর আগে মত কিছু সম্বোধন করেছি

পরামর্শ

আপনার InnoDB লেনদেনের লগগুলি বাড়ানো দরকার । নিরাপদে ইনোডাব_লগ_বাফলার_সাইজ এবং ইনানোডব_লগ_ফाइल_ সাইজ বাড়ানোর পদক্ষেপগুলি এখানে :

পদক্ষেপ 01: এগুলিতে যুক্ত করুন /etc/my.cnf

[mysqld]
innodb_log_buffer_size = 32M
innodb_log_file_size = 2047M

পদক্ষেপ 02: এটি mysql এ চালান

mysql> SET GLOBAL innodb_fast_shutdown = 0;

পদক্ষেপ 03: বন্ধ মাইএসকিএল l

service mysql stop

পদক্ষেপ 04: পুরানো লগগুলি একপাশে সরান

mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak

পদক্ষেপ 05: mysql শুরু করুন

service mysql start

এটাই.

InnoDB অবকাঠামোতে এখন বিভিন্ন আকারের বিএলওবিগুলির জন্য পর্যাপ্ত লগিং স্পেস থাকা উচিত।

একবার চেষ্টা করে দেখো !!!


প্রতিক্রিয়াটির জন্য আপনাকে অনেক ধন্যবাদ, আমি mysql.cnfফাইল যুক্ত করতে আমার প্রশ্নটি সম্পাদনা করেছি । আপনার পরামর্শ অনুসারে আমি তা করেছিলাম তবে সতর্কতাটি পেতে পারি। দেখতে পাচ্ছি max_allowed_packetমধ্যে mysqldumpঠিক হয় 16Mbকিন্তু আমি অনুমান কারণ নয়। key_buffer_sizeঠিক হয় 16Kbএবং আবার এটা দিয়ে কিছু হওয়া উচিত MyISAMএবং আমি ব্যবহার করছি না MyISAMঅ্যাপ্লিকেশনে স্টোরেজ ইঞ্জিন।

এছাড়াও - যে কেউ এপাচি সার্ভারের সাথে কাজ করার সময় এর মুখোমুখি হয়, তাদেরও আমাকে সেই পরিষেবা পুনরায় চালু করতে হয়েছিল। এর জন্য আপনাকে অনেক ধন্যবাদ - আমি নিরীহ ছিলাম।
ডিজিও

1

এই পুরানো প্রশ্নটিতে জানুয়ারী 16 এ @ ব্যবহারকারী 19292 এর মন্তব্য পড়ার পরে, আমি 5.7.9 থেকে 5.7.12 এ আপগ্রেড করেছি এবং সমস্যাটি চলে গেল।


2
আমি 5.7.23 ব্যবহার করছি এবং একই সমস্যা হচ্ছে
যিশু উজঙ্গা

1
এখানে একই, ত্রুটি 5.7.26 এর সাথে উপস্থিত রয়েছে। আপনার ক্ষেত্রে আপগ্রেড সম্ভবত কনফিগারগুলি পুনরায় সেট করুন, সুতরাং এটি আপনার সমস্যার সমাধান করতে পারে।
স্লিক

0

আমি মাত্র প্রায় 5-6 ঘন্টা অপশনগুলি পরিবর্তন করতে এবং মাইএসকিউএলের বিভিন্ন সংস্করণ চেষ্টা করে কাটিয়েছি, আমি সর্বদা ত্রুটি পেয়েছি।

আমি মনে করি এটি আরও ভাল কারণ:

  • আমার পিএইচপি কোডটি সঠিকভাবে ডিবি সংযোগ বন্ধ করছে না (এটি একটি সতর্কতা, ত্রুটি নয়) mysql_close()equivalent
  • অথবা ক্লায়েন্ট যদি এটি বন্ধ করে দেয় তবে সংযোগটি বন্ধ করার জন্য এনজিন্স ক্যাশে / প্রক্সি সার্ভারটি কনফিগার করা হয়েছে, ক্যাশে / প্রক্সি সার্ভারটি মূল সার্ভারের জন্য অপেক্ষা করে না (যেখানে মাইএসকিএলও রয়েছে)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.