سؤال

لدينا اتصال Applet-Servlet الذي نرغب في تسجيله باستخدام وكيل HTTP الخاص بـ JMeter. إنه يعمل مع رسائل الحصول على الرسائل حتى يرسل التطبيق رسالة نشر HTTP والتي تتضمن بعض كائنات Java المسلسل (أنواع مدمجة) ، ثم نحصل على هذا الخطأ في التطبيق:

alt text http://img339

حسنًا ، لذلك هناك بعض الصراع في إصدار JVM في مكان ما في قائمة الانتظار. لكن أين؟

يعمل الاتصال بشكل جيد بدون jmeter ، أي: applet -> tomcat -> servlet. كل شيء على جهازي المحلي.

لكنه لا يعمل من خلال jmeter: applet -> jmeter proxy -> tomcat -> servlet. أيضا كل شيء على جهازي.

يبدو الأمر كما لو أن JMeter كان يعدل محتوى رسالة النشر ...

لقد اختبرته مع وكيل Apache أيضًا ، يعمل بشكل جيد.

حتى الشيء الأكثر تسلية هو أن لدي نسخة واحدة فقط من Java مثبتة ، JDK واحد و JRE واحد. كلا 1.6.0_07 ...

اعتقدت أنني سأطلب قبل البدء في الحفر بشكل أعمق في حفرة الأرنب ؛-)

إليكم تفريغ Hex للبيانات المنشورة المرسلة مباشرة إلى Tomcat:

00000348  ac ed 00 05 73 72 00 11  6a 61 76 61 2e 6c 61 6e ....sr.. java.lan
00000358  67 2e 49 6e 74 65 67 65  72 12 e2 a0 a4 f7 81 87 g.Intege r.......
00000368  38 02 00 01 49 00 05 76  61 6c 75 65 78 72 00 10 8...I..v aluexr..
00000378  6a 61 76 61 2e 6c 61 6e  67 2e 4e 75 6d 62 65 72 java.lan g.Number
00000388  86 ac 95 1d 0b 94 e0 8b  02 00 00 78 70 00 00 01 ........ ...xp...
00000398  7b                                               {

وهنا البيانات عند إرسالها عبر jmeter:

00000128  ac ed 00 05 73 72 00 11  6a 61 76 61 2e 6c 61 6e ....sr.. java.lan
00000138  67 2e 49 6e 74 65 67 65  72 12 e2 a0 a4 f7 3f 3f g.Intege r.....??
00000148  38 02 00 01 49 00 05 76  61 6c 75 65 78 72 00 10 8...I..v aluexr..
00000158  6a 61 76 61 2e 6c 61 6e  67 2e 4e 75 6d 62 65 72 java.lan g.Number
00000168  3f ac 3f 1d 0b 3f e0 3f  02 00 00 78 70 00 00 01 ?.?..?.? ...xp...
00000178  7b                                               {

الكثير من "3F" في التفريغ الثاني ... لذلك هذا بالتأكيد نوع من مشكلة الترميز. يتم تعيين نوع المحتوى بشكل صحيح في الرأس:

POST /ABCOrder/ABCServlet?cmd=getNetworkConnection HTTP/1.1
Connection: keep-alive
Content-Type: application/octet-stream
Host: 109.107.148.164:8443
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
User-Agent: Mozilla/4.0 (Windows Vista 6.0) Java/1.6.0_14
Content-Length: 81
هل كانت مفيدة؟

المحلول

فيما يلي الحل: يحتوي JMeter على ملف تكوين ، بن/jmeter.properties. هنا يمكنك العثور على خيار حيث يمكنك تعيين أنواع المحتوى الثنائي:

# Binary content-type handling
# These content-types will be handled by saving the request in a file:
proxy.binary.types=application/x-amf,application/x-java-serialized-object

الآن لا أعرف لماذا التطبيق/ثماني الثماني غير مدرج افتراضيًا ، ولكن يمكنك ببساطة إضافته إلى القائمة ، وقد انتهيت.

proxy.binary.types=application/x-amf,application/x-java-serialized-object,application/octet-stream

هذه هي الطريقة التي وجدتها بها:https://issues.apache.org/bugzilla/show_bug.cgi؟id=44808

هل بحث على jmeter مغلق الأخطاء ... :-)

نصائح أخرى

شخص آخر يبلغ مشابهًا جدًا: http://markmail.org/message/pl5erin2isehm5q6. لا يمكنني العثور على أي مشكلة تتعلق بهذه المشكلة في تعقب الأخطاء رغم ذلك. يبدو أنك فازت بامتياز الحفر بشكل أعمق في حفرة الأرنب :)

تسمح الإجابة المقبولة فقط بتسجيل الطلبات الثابتة. لن يكون هذا واقعيًا لأنه لن يسمح بأي تباين للطلبات (على سبيل المثال تغيير الكلمة التي تم تفتيشها ، ...) لذلك ستكون دائمًا تختبر الإجهاد نفس مجموعة البيانات.

لجعله اختبارًا حقيقيًا ، تحتاج إلى استخدام مكون إضافي لجهة خارجية.

يتيح مكون الإضافي التجاري JMeter هذا ، راجع:

لجعل اختباراتك واقعية ، ستحتاج إلى تباين المحتوى في الكائنات المسلسل.

سيسمح هذا البرنامج المساعد التسلسلي Java بما يلي:

  • يسهل تسجيل حركة المرور مع خادم JMeter Proxy ، وسيتم إنشاء خطة اختبار باستخدام Sampler المخصصة

  • سهلة المتغيرات للطلبات (والتي ستظهر كـ XML) من خلال بناء الجملة السهل على سبيل المثال $ {searchedword} حيث يمكن أن تأتي كلمة البحث من CSV أو أي متغير محدد للمستخدم.

  • استخراج سهل للبيانات من الاستجابات باستخدام معالجات النشر القياسية JMeter

  • سهولة تصحيح الطلب/الاستجابات من خلال عنصر الشجرة القياسي في عرض JMeter

إخلاء المسئولية: أنا أعمل في هذه الشركة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top