Ошибка вызова метода внешней компоненты a socket error occurred

@pinepain yes, reloading php-fpm can solves the issue; php version is 7.0.6 and rabbitmq version is 3.6.5;
when i run the code as follows i get the error. thanks

$conn_args = array(
‘host’ => ‘192.168.204.72’,
‘port’ => ‘5672’,
‘login’ => ‘root’,
‘password’ => ‘root’,
‘heartbeat’ => 6
);
$conn = new AMQPConnection($conn_args);
if ($conn->pconnect()) {
echo «Established a connection to the broker n»;
} else {
echo «Cannot connect to the broker n «;
}
$channel = new AMQPChannel($conn);

$ex = new AMQPExchange($channel);
$ex->setName(‘exchange33’);
$ex->setType(AMQP_EX_TYPE_DIRECT);
$ex->setFlags(AMQP_DURABLE);

echo «exchange status:».$ex->declareExchange();
echo «n»;

$queue = new AMQPQueue($channel);
$queue->setName(‘queue33’);
$queue->setFlags(AMQP_NOPARAM);
$queue->declareQueue();
$queue->bind(‘exchange33′,’key’);

$message = json_encode(array(‘Hello World3!’,’php3′,’c++3:’));
$routingkey=’key’;
$res = $ex->publish($message,$routingkey);

php -version

PHP 7.0.6 (cli) (built: Jun 4 2016 13:48:07) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans

rabbitmqctl status

Status of node rabbit@localhost …
[{pid,27552},
{running_applications,
[{rabbitmq_management,»RabbitMQ Management Console»,»3.6.5″},
{rabbitmq_management_agent,»RabbitMQ Management Agent»,»3.6.5″},
{rabbit,»RabbitMQ»,»3.6.5″},
{os_mon,»CPO CXC 138 46″,»2.4.1″},
{rabbitmq_web_dispatch,»RabbitMQ Web Dispatcher»,»3.6.5″},
{webmachine,»webmachine»,»1.10.3″},
{mochiweb,»MochiMedia Web Server»,»2.13.1″},
{ssl,»Erlang/OTP SSL application»,»8.0.2″},
{public_key,»Public key infrastructure»,»1.2″},
{crypto,»CRYPTO»,»3.7.1″},
{amqp_client,»RabbitMQ AMQP Client»,»3.6.5″},
{rabbit_common,[],»3.6.5″},
{compiler,»ERTS CXC 138 10″,»7.0.2″},
{ranch,»Socket acceptor pool for TCP protocols.»,»1.2.1″},
{asn1,»The Erlang ASN1 compiler version 4.0.4″,»4.0.4″},
{syntax_tools,»Syntax tools»,»2.1″},
{inets,»INETS CXC 138 49″,»6.3.3″},
{xmerl,»XML parser»,»1.3.12″},
{mnesia,»MNESIA CXC 138 12″,»4.14.1″},
{sasl,»SASL CXC 138 11″,»3.0.1″},
{stdlib,»ERTS CXC 138 10″,»3.1″},
{kernel,»ERTS CXC 138 10″,»5.1″}]},
{os,{unix,linux}},
{erlang_version,
«Erlang/OTP 19 [erts-8.1] [source-77fb4f8] [64-bit] [smp:4:4] [async-threads:64] [hipe] [kernel-poll:true]n»},
{memory,
[{total,59202976},
{connection_readers,0},
{connection_writers,0},
{connection_channels,0},
{connection_other,2832},
{queue_procs,209624},
{queue_slave_procs,0},
{plugins,602808},
{other_proc,19381184},
{mnesia,82456},
{mgmt_db,509904},
{msg_index,48168},
{other_ets,1515968},
{binary,34472},
{code,24815589},
{atom,1033401},
{other_system,10966570}]},
{alarms,[]},
{listeners,[{clustering,25672,»::»},{amqp,5672,»::»}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,3301144985},
{disk_free_limit,50000000},
{disk_free,52243738624},
{file_descriptors,
[{total_limit,102300},
{total_used,3},
{sockets_limit,92068},
{sockets_used,0}]},
{processes,[{limit,1048576},{used,236}]},
{run_queue,0},
{uptime,39},
{kernel,{net_ticktime,60}}]

I’m using Celery within Django with RabbitMQ as the broker on Heroku. My RabbitMQ service is CloudAMQP Tough on Heroku. If relevant, we’ve been having somewhat frequent memory leaks that I’ve been trying to plug, but generally service isn’t degraded when it happens.

When the site is heavily trafficked (like today), I start getting occasional errors like the following:

Couldn't log in: a socket error occurred

The task is completely thrown out and not registered anywhere. This is obviously a business-critical problem. My celery settings are below:

BROKER_URL = os.getenv('CLOUDAMQP_URL', DEFAULT_AMQP)
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['pickle', 'json']
CELERY_ENABLE_UTC = True
# CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend']
CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True
CELERY_SEND_TASK_ERROR_EMAILS = True
CELERY_RESULT_BACKEND = False
CELERY_IMPORTS = ('business.admin', 'mainsite.views', 'utils.crons', 'mainsite.forms', )
BROKER_POOL_LIMIT = 5

# trying to clean up this memory leak
CELERYD_MAX_TASKS_PER_CHILD = 5
CELERYD_TASK_TIME_LIMIT = 60*60

I’m a bit new to celery so I’m happy to provide as follow-up whatever logs/etc will be helpful, but I’m not even sure what to provide at this point. Is there anything obvious in my settings or environment that seems like it could be causing this problem when heavily trafficked?

I’m using Celery within Django with RabbitMQ as the broker on Heroku. My RabbitMQ service is CloudAMQP Tough on Heroku. If relevant, we’ve been having somewhat frequent memory leaks that I’ve been trying to plug, but generally service isn’t degraded when it happens.

When the site is heavily trafficked (like today), I start getting occasional errors like the following:

Couldn't log in: a socket error occurred

The task is completely thrown out and not registered anywhere. This is obviously a business-critical problem. My celery settings are below:

BROKER_URL = os.getenv('CLOUDAMQP_URL', DEFAULT_AMQP)
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['pickle', 'json']
CELERY_ENABLE_UTC = True
# CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend']
CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True
CELERY_SEND_TASK_ERROR_EMAILS = True
CELERY_RESULT_BACKEND = False
CELERY_IMPORTS = ('business.admin', 'mainsite.views', 'utils.crons', 'mainsite.forms', )
BROKER_POOL_LIMIT = 5

# trying to clean up this memory leak
CELERYD_MAX_TASKS_PER_CHILD = 5
CELERYD_TASK_TIME_LIMIT = 60*60

I’m a bit new to celery so I’m happy to provide as follow-up whatever logs/etc will be helpful, but I’m not even sure what to provide at this point. Is there anything obvious in my settings or environment that seems like it could be causing this problem when heavily trafficked?

Ошибка сокета может быть связана с тем, что RabbitMQ или Heroku были убиты Linux Out-of-Memory Killer. Когда серверу не хватает памяти из-за неиспользуемого выделения памяти некоторыми процессами, ядро ​​Linux пытается найти причину и убивает связанный процесс. Использование слишком большого количества памяти RabbitMQ может привести к гибели. Вы можете узнать, убил ли Linux OOM определенный процесс, используя grep -i kill /var/log/messages*

Используйте следующие ссылки для более подробной информации и изучения конфигурации Linux OOM:

Как настроить убийцу нехватки памяти в Linux

Вы используете супервизор?

http://supervisord.org/ — отличный демон для запуска и мониторинга процессов. Используя этот, вы можете быть уверены, что все долго работающие процессы, такие как RabbitMQ, всегда будут работать и работать, даже если процесс будет остановлен.

Есть две возможные причины утечки памяти:

  1. Если settings.DEBUG — True, это может привести к утечке памяти. Убедитесь, что settings.DEBUG if установлен в False в вашей рабочей конфигурации.

  2. Вы должны использовать результаты задания, если планируете их сохранять. Если вы их не используете, вы столкнетесь с проблемами утечки памяти. Чтобы решить эту проблему, вы можете изменить настройки, используя следующие строки:

    # Just ignore the results, in case you're not consuming results.
    CELERY_IGNORE_RESULT = True
    CELERY_STORE_ERRORS_EVEN_IF_IGNORED = False
    

Rabbitmq queue connection problem

An error problem:

Library error: a socket error occurred
Could not publish to exchange. No channel available

surroundings:

PHP

Scene:

Due to the overall consumption process, the consumer queue consumes

problem lies in:

The connection is not responded (more than the heartbeat detection time), the server is automatically disconnected, while the client’s connection is still here, at this time, when some response operations do, it will report the error, different response operations may be different. Error tips, currently, I only found two two. PHP’s message queue extension has an ISConnect detection connection method, which is invalid to initiate a connection to the server.

Solution:

1. Set the heartbeat detection interval longer:

 $this->connect = new AMQPConnection(['heartbeat' => 600]);

2. During the process of processing the code, frequently call the declarequeue () method (must be called when the connection is still there, or do other response queue operations), the principle is that the frequent communication server is corresponding to the server, keep interaction.

kvic

Сообщения: 9
Зарегистрирован: 19 апр 2018, 17:19

DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Пытаюсь работать с драйвером для 1с DriverUnitServer, при попытке вызова ProcessCheck получаю «Ошибка вызова метода внешней компоненты», вот xml в ДанныеЧека:
<?xml version=»1.0″ encoding=»UTF-8″?>
<CheckPackage>
<Parameters PaymentType=»1″ TaxVariant=»2″ CashierName=»system» CashierVATIN=»753700356908″/>
<Positions>
<FiscalString Name=»Стеклокерамическая панель» Quantity=»1″ PriceWithDiscount=»700″ SumWithDiscount=»700″ DiscountSum=»0″ Department=»1″ Tax=»none» TaxSum=»0″ SignMethodCalculation=»4″ SignCalculationObject=»1″/>
</Positions>
<Payments Cash=»700″ ElectronicPayment=»0″ Credit=»0″ AdvancePayment=»0″ CashProvision=»0″/>
</CheckPackage>
БПО стандартного на конфигурации нет, все вызовы собираю сам, по документации и подсматривая в БПО. Чего-то видимо не вижу


Audim

Администратор
Сообщения: 2283
Зарегистрирован: 17 мар 2015, 18:36

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

Audim » 15 сен 2018, 01:45

А перед эти проинициализировали (SetParameter) компоненту параметрами?
Все параметры передали?
«Open» делали?



kvic

Сообщения: 9
Зарегистрирован: 19 апр 2018, 17:19

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

kvic » 17 сен 2018, 16:11

Дело в том что чек выводится, переключил эмулятор в обычный режим и увидел. БПО ведет себя аналогично: выводит чек и говорит: При выполнении операции произошла ошибка: Ошибка вызова метода <ОбъектДрайвера.СформироватьЧек>.
{ОбщийМодуль.ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.Модуль(1056)}: Ошибка при вызове метода контекста (СформироватьЧек): Ошибка вызова метода внешней компоненты


Audim

Администратор
Сообщения: 2283
Зарегистрирован: 17 мар 2015, 18:36

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

Audim » 18 сен 2018, 23:19

Перепроверил драйвер, все работает.

Можете прислать базу с обработкой на проверку?


kvic

Сообщения: 9
Зарегистрирован: 19 апр 2018, 17:19

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

kvic » 19 сен 2018, 15:28

Тестировал на БПО, скачанной по ссылке из предыдущего ответа, на машине 64 разрядная Windows 7 корпоративная, 1с Предприятие клиент 32 разрядный
Попробовал вставить снимок экрана
Изображение


kvic

Сообщения: 9
Зарегистрирован: 19 апр 2018, 17:19

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

kvic » 19 сен 2018, 15:40

Форму обработки тестирования из БПО пришлось подправить строкой 463, иначе при «Печатать чек по шаблону» возникает
«При выполнении операции произошла ошибка: Message: Не указан ИНН продавца»
ОбщиеПараметры.КассирИНН = «325435435223»;


Audim

Администратор
Сообщения: 2283
Зарегистрирован: 17 мар 2015, 18:36

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

Audim » 19 сен 2018, 17:28

Драйвер в БПО загружали или тестировали на том что в ней было?

Еще: удалите файл C:Users<user>AppDataRoaming1C1cv8ExtCompTDriverUnitServer_x32.dll
(Может он старый, а 1с его не переисала)
И заново из 1с БПО установите драйвер.


kvic

Сообщения: 9
Зарегистрирован: 19 апр 2018, 17:19

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

kvic » 19 сен 2018, 19:17

Драйвер ставил тот что в БПО, дата-время позавчера, удалил, поставил снова из БПО, результат не изменился


Audim

Администратор
Сообщения: 2283
Зарегистрирован: 17 мар 2015, 18:36

Re: DriverUnitServer 1с Ошибка вызова метода внешней компоненты

Сообщение

Audim » 20 сен 2018, 02:41

Так, а тимвьюверу можно подключится — посмотреть….


  • Ошибка вызова метода внешней компоненты 1с штрих
  • Ошибка выделения памяти симсити
  • Ошибка выделения памяти при выгрузке 1с
  • Ошибка выделения памяти джава
  • Ошибка выделения памяти mysql