المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

معلومات أساسية

المشكلة

قرار

المقدمة

يصف هذا المستند إجراء أستكشاف أخطاء عملية مراقبة أخطاء بروتوكول وضع الرسائل المتقدمة (AMQP) وإصلاحها

اسواثي سورندران ، وجوستافو بيل cisco TAC المهندسين.

المتطلبات الأساسية

المتطلبات

توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:

- واجهة Linux

- بيئات الأجهزة الافتراضية

- أرنب

المكونات المستخدمة

تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج التالية:

- CloudCenter الإصدار 4.3.x إلى 4.6.x

- CloudCenter Message Bus (RabbitMQ_Server)

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.

معلومات أساسية

حجم مؤشر الترابط النشط للتجمع هو 64 حيث كانت مؤشرات الترابط التي تم إرسالها المقابلة للوظائف أكثر من 3000 والتي سيتم رفضها حيث يتعذر على التعليمات البرمجية معالجة أكثر من 64 مؤشر ترابط في المرة الواحدة وبالتالي ستنتظر المهمة السابقة حتى يتم إكمالها وتنفيذ المهمة الأخرى.

سيتم رفض أية مهمة أكبر من تلك التي يمكن أن يستهلكها تجمع مؤشرات الترابط.

المشكلة

حدد موقع filecliqr-connection.log في /usr/local/tomcatgua/logs/ الإعلام عن خطأ:

Caused by: org.springframework.core.task.TaskRejectedException: Executor [java.util.concurrent.ThreadPoolExecutor@6737f4fb[Running, pool size = 64, active threads = 64, queued tasks = 3000, completed tasks = 413]] did not accept task: org.springframework.aop.interceptor.AsyncExecutionInterceptor$1@6b0517b3

at org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.submit(ThreadPoolTaskExecutor.java:284)

at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.doSubmit(AsyncExecutionAspectSupport.java:186)

at org.springframework.aop.interceptor.AsyncExecutionInterceptor.invoke(AsyncExecutionInterceptor.java:123)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)

at com.sun.proxy.$Proxy84.processMessage(Unknown Source)

at com.osmosix.commons.messaging.listeners.impl.DefaultNodeMessageListener.handleMessage(DefaultNodeMessageListener.java:35)

at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:269)

at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:383)

... 12 more

Caused by: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@3911a213 rejected from java.util.concurrent.ThreadPoolExecutor@6737f4fb[Running, pool size = 64, active threads = 64, queued tasks = 3000, completed tasks = 413]

at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)

at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)

at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)

at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)

at org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.submit(ThreadPoolTaskExecutor.java:281)

... 23 more

2016-10-19 02:32:32,205 INFO annotation.RequestMappingHandlerMapping [localhost-startStop-1] - Mapped "{[/image/service/dltargetlocal],methods=[POST]}" onto public java.util.Map<java.lang.String, ?> com.osmosix.gateway.image.transform.ImageTransformController.downloadToTargetLocal(com.osmosix.commons.image.transform.DownloadImageFileRequest)

2016-10-19 02:32:32,206 WARN listener.ConditionalRejectingErrorHandler [SimpleAsyncTaskExecutor-1] - Execution of Rabbit message listener failed.

org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener method 'handleMessage' threw exception

at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:391)

at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:294)

at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:757)

at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:680)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:93)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:183)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1352)

at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:661)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1096)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1080)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$800(SimpleMessageListenerContainer.java:93)

at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1197)

at java.lang.Thread.run(Thread.java:745)

قرار

الخطوة 1.  تسجيل الدخول إلى خادم RabbitMQ عبر SSH.

الخطوة 2. التبديل إلى المستخدم الجذري.

# sudo -i

الخطوة 3. تمكين الوظيفة الإضافية.

# rabbitmq-plugins enable rabbitmq_management

الخطوة 4. تمكين الوصول إلى أمر Rabbitmqadmin.

# chmod +x `find /var/lib/rabbitmq/ -name "rabbitmqadmin"`

# ln -s `find /var/lib/rabbitmq/ -name "rabbitmqadmin"` /usr/sbin

الخطوة 5. يمكن الوصول إلى RabbitMQ عبر واجهة المستخدم الرسومية (GUI).

http://

:15672 (username=cliqr password=cliqr)

ملاحظة: استبدل RabbitMQ_Server_IP في التكوين بعنوان خادم RabbitMQ الخاص بك

قم بالتنقل في علامة التبويب قوائم الانتظار لرؤية التفاصيل

أو

CLI:

# rabbitmqadmin -V /cliqr -u cliqr -p cliqr list queues

# rabbitmqadmin -V /cliqr -u cliqr -p cliqr list exchanges

# rabbitmqadmin -V /cliqr -u cliqr -p cliqr list channels

الخطوة 6. لحذف قائمة انتظار نبض البوابة.

#rabbitmqadmin -V /cliqr delete queue name=cliqr.gateway.heartbeat.queue --username=cliqr --password=cliqr

الخطوة 7.  قم بإعادة تشغيل خدمة Tomcat في RabbitServer.

#/etc/init.d/tomcatgua stop

#/etc/init.d/tomcatgua start

ملاحظة: إذا كان cliqr.gateway.heartbeat.queue مفقودا، أعد تشغيل خدمة CCO Tomcat باتباع الخطوات التالية:

الخطوة 8.  تسجيل الدخول إلى خادم CCO عبر SSH.

الخطوة 9. التبديل إلى المستخدم الجذري.

# sudo -i

الخطوة 10. أعد تشغيل خادم Tomcat.

#/etc/init.d/tomcat stop

#/etc/init.d/tomcat start