2016-11-23 9 views
6

प्रिय Sonarqube समुदाय,Sonarqube 6.1 com.mysql.jdbc.PacketTooBigException: क्वेरी के लिए पैकेट

Sonarqube 6.1 को अद्यतन के बाद से हम Sonarqube भीतर एक त्रुटि हो रही है जहां क्वेरी के लिए एक पैकेट बहुत बड़ी है बहुत बड़ी है। हम क्या करते हैं: जेनकिंस PHP स्रोत कोड की जांच कर रहा है, फिर सोनारक्यूब स्कैनर स्रोत कोड का विश्लेषण कर रहा है और सोनारक्यूब सर्वर के साथ संचार करता है। इस प्रक्रिया को जेनकींस में लॉग उत्पादन के साथ विफल हो रहा है:

org.sonarqube.ws.client.HttpException: Error 500 on http://URL-TO-SONAR/sonar/api/ce/submit?projectKey=lhind.php.PRJName&projectName=PRJName : {"errors":[{"msg":"Fail to insert data of CE task AViRLtiaB_5m8twj_1J3"}]}

  • जेनकींस संस्करण: 2.19.3
  • SonarQube संस्करण: 6.1
  • SonarQube स्कैनर: 2.8
  • MySQL संस्करण: 5.6। 34
  • चालक: MySQL कनेक्टर जावा
  • चालक संस्करण: mysql-connector-java-5.1.39
  • MySQL varaible "max_allowed_packet = 16M" (4M से बढ़ाकर)
  • MySQL varaible "innodb_log_file_size = 128M" (48M से बढ़ाकर)
  • सोनार JDBC कनेक्शन स्ट्रिंग: "
  • sonar.jdbc.url = JDBC: mysql: // डीबी यूआरएल:? 3306/सोनार useUnicode = सच & * characterEncoding = UTF8 & rewriteBatchedStatements = सच & useConfigs = maxPerformance & maxAllowedPacket = 16777216 "

हम अधिकतम पैकेट आकार और Inno वृद्धि हुई alread db_log_file_size। हमें सोनारक्यूब 6.1 के साथ समान मात्रा में कोड के साथ यह समस्या नहीं थी।

कोई भी विचार?

2016.11.23 12:35:16 ERROR web[][o.s.s.w.WebServiceEngine] Fail to process request http://SONAR-URL.de:8443/sonar/api/ce/submit?projectKey=lhind.php.PRJName&projectName=PRJName java.lang.IllegalStateException: Fail to insert data of CE task AViRLtiaB_5m8twj_1J3 at org.sonar.db.ce.CeTaskInputDao.insert(CeTaskInputDao.java:56) ~[sonar-db-6.1.jar:na] (deleted because too much text ...) at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111] **Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (24313938 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.** at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3671) ~[mysql-connector-java-5.1.39.jar:5.1.39] (deleted because too much text ...) at org.sonar.db.ce.CeTaskInputDao.insert(CeTaskInputDao.java:53) ~[sonar-db-6.1.jar:na] ... 34 common frames omitted

+0

कृपया कोड कोड में अपना कोड डालें। इसे पढ़ना असंभव है। – Fencer04

उत्तर

11

इस समस्या को हल करने के लिए दोनों क्लाइंट और सर्वर पर MySQL में अधिकतम स्वीकृत पैकेट आकार बढ़ाएँ:

SonarQube हम sonar.log फ़ाइल में निम्न अपवाद मिला है।

सर्वर

कैसे सर्वर पर यह करने के लिए के बारे में जानकारी के लिए यहां संकल्प अनुभाग देखें। इस मान को 256 एमबी पर सेट करने की सिफारिश है। उपरोक्त स्टैकट्रैक में, पैकेट आकार लगभग 24 एमबी है।

https://confluence.atlassian.com/confkb/exceeds-max-allowed-packet-for-mysql-179443425.html

मैं ऊपर है क्योंकि यह बताता है कि कैसे डेटाबेस को रोके बिना मूल्य में वृद्धि करने, कि अगर आप के लिए महत्वपूर्ण है लिंक की तरह।

ग्राहक

ग्राहक पर, SonarQube JDBC URL में maxAllowedPacket पैरामीटर के मूल्य में वृद्धि।

संदर्भ

अधिक जानकारी के लिए, MySQL दस्तावेज में निम्नलिखित लिंक देखें।

  1. http://dev.mysql.com/doc/refman/5.7/en/packet-too-large.html

Both the client and the server have their own max_allowed_packet variable, so if you want to handle big packets, you must increase this variable both in the client and in the server.

  1. https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

maxAllowedPacket

Maximum allowed packet size to send to server. If not set, the value of system variable 'max_allowed_packet' will be used to initialize this upon connecting. This value will not take effect if set larger than the value of 'max_allowed_packet'. Also, due to an internal dependency with the property "blobSendChunkSize", this setting has a minimum value of "8203" if "useServerPrepStmts" is set to "true".

Default: -1

Since version: 5.1.8

+0

आपके उत्तर के लिए धन्यवाद। मैंने सोचा कि मुझे सोनारक्यूब 6.0 से सोनारक्यूब 6.1 में अपडेट करने के बाद ही इस बदलाव की आवश्यकता क्यों है। Thats क्यों मुझे एक और जवाब खोजने की उम्मीद है। विश्लेषण परियोजना का रिपोर्ट आकार 75 एमबी और 22 एमबी से ज़िप्ड फ़ाइल के रूप में बड़ा है। महत्वपूर्ण, ज़िप आकार या सामान्य रिपोर्ट आकार क्या है? –

+0

मैंने अगले कुछ वर्षों के लिए समस्या को हल करने के लिए निम्नलिखित किया: सबसे पहले, mysql डीबी के वैश्विक वैरिएबल बदलें: "maxAllowedPacket = 268435456" और "innodb_log_file_size = 536870912" (ध्यान दें: लॉग फ़ाइल आकार बढ़ाना मतलब है, आपको मुफ्त डिस्क की आवश्यकता है आपके mysql डीबी की शुरुआत के साथ स्थान, 2 (मानक विन्यास) से गुणा किया गया। तो 2 फाइलें बनाई जाएंगी)। Jdbc कनेक्शन स्ट्रिंग को बदलने और maxAllowedPacket के लिए पैरामीटर जोड़ें को भूलना न भूलें! –

1

यहाँ मैं क्या किया था जब मैं एक ही मुद्दा था और यह मेरा संकल्प लिया है।

सर्वर त्रुटि:

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4237058 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable. 

चेक यह पहली वर्तमान मूल्य पता करने के लिए: अपने mysql हालांकि टर्मिनल के लिए

लॉग इन और bellow आदेश चला। आप नीचे वर्तमान मूल्य देख सकते हैं।

mysql> SHOW VARIABLES LIKE 'max_allowed_packet'; 

+--------------------+---------+ 
| Variable_name  | Value | 
+--------------------+---------+ 
| max_allowed_packet | 4194304 | 
+--------------------+---------+ 
1 row in set (0.00 sec) 

max_allowed_packet इस तरह के कुछ मूल्य को सेट करें। उद्देश्य आपकी आवश्यकता के आधार पर मूल्य बढ़ाने के लिए है।

mysql> SET GLOBAL max_allowed_packet=512000000; 

अद्यतन मूल्य देखने के लिए निम्न आदेश को दोबारा चलाएं। आपको mysql से बाहर निकलना होगा (या तो exit; कमांड या सीएलआई के बंद बटन पर क्लिक करके) और वापस लॉग इन करना होगा।

mysql> SHOW VARIABLES LIKE 'max_allowed_packet'; 
+0

जेम की तरह काम करता है! – sam

0

मैं लेकिन एक ही समस्या थी, हम एक सीमा जहां हम MySQL सर्वर विन्यास को नहीं बदल सकता है (max_allowed_packet)

मैं क्लाइंट साइड JDBC बदलकर इस काम कर प्राप्त करने में सक्षम था यूआरएल कॉन्फ़िगरेशन -> सर्वर कॉन्फ़िगरेशन को छोड़कर है।

ध्यान दें कि हमें यहां 'useServerPrepStmts = true' का उपयोग करना होगा।

jdbc:mysql://[dbhost]:[dbport]?useUnicode=true&rewriteBatchedStatements=true&characterEncoding=utf8&useServerPrepStmts=true&maxAllowedPacket=20000000&useSSL=false 

चेक mysql संबंधक config संदर्भ here

ताकि विस्तार से क्लाइंट साइड परिवर्तन abt वार्ता पर एक और पोस्ट है - जाँच here

आशा इस मदद करता है!

संबंधित मुद्दे