<div dir="ltr">Hello and thanks for the answers.<div><br></div><div>I cannot reuse the channels, requests processed trough fpm do not share resources at app level.</div><div>PHP-amqplib cannot be used, is way too slow because it doesn't support persistent connections (is minimum 6x times slower then the pecl one, and slows down the entire apps to a factor of 4-5, we tested it in production), and s all because this line of code (new AMQPConnection...).</div>
<div><br></div><div>I think php-amqplib reuse the channels, I can mark them as DURABLE, and have a specific name, but the PECL one it doesn't, you must create a new channel every time.</div><div><br></div><div>I will try to close them at the end of the request, but I thought it automatically does that when the script ends.</div>
<div><br></div><div>With PECL we have multiple persistent connections per server, and each connection process hundreds of requests, so far the problem didn't appeared in production tests, maybe because the fpm workers are limited to a small number of requests. <br>
</div><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><font style="color:rgb(153,153,153)" size="1"><span style="font-family:courier new,monospace">/********************************</span></font><br style="font-family:courier new,monospace;color:rgb(153,153,153)">
<span style="color:rgb(153,153,153)"><span style="font-family:courier new,monospace">@author <b><span style="color:rgb(51,51,51)">B.G. Adrian</span></b></span></span><br style="font-family:courier new,monospace;color:rgb(153,153,153)">
<span style="font-family:courier new,monospace;color:rgb(153,153,153)">@as <b style="color:rgb(51,51,51)">Game developer</b></span><br style="font-family:courier new,monospace;color:rgb(153,153,153)"><span style="font-family:courier new,monospace;color:rgb(153,153,153)">@from www.<b style="color:rgb(51,51,51)">btools</b>.eu</span><div>
<font color="#999999" face="courier new, monospace">@games </font><span style="color:rgb(153,153,153);font-family:'courier new',monospace">www.</span><b style="font-family:'courier new',monospace">bcardgames<font color="#999999">.com</font></b></div>
<div><div><span style="color:rgb(153,153,153);font-family:'courier new',monospace">@work www.</span><b style="font-family:'courier new',monospace;color:rgb(51,51,51)">mavenhut</b><span style="color:rgb(153,153,153);font-family:'courier new',monospace">.com</span><font color="#999999" face="courier new, monospace"><br>
</font><div><font style="color:rgb(153,153,153)" size="1"><span style="font-family:courier new,monospace">*********************************/</span></font><br></div></div></div></div></div>
<br><br><div class="gmail_quote">On Tue, May 27, 2014 at 9:38 AM, Alvaro Videla <span dir="ltr"><<a href="mailto:videlalvaro@gmail.com" target="_blank">videlalvaro@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">As MK said, be sure to either close the channels after you don't need them, or reuse them. For me it seems that you are keeping persistent connections and then you open one channel per request, but you don't close the channel at the end, therefore the channels are "leaking", and thus your problem.<div>

<br></div><div>Regards,</div><div><br></div><div>Alvaro</div></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div class="h5">On Tue, May 27, 2014 at 7:25 AM, Michael Klishin <span dir="ltr"><<a href="mailto:mklishin@gopivotal.com" target="_blank">mklishin@gopivotal.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div> On 27 May 2014 at 03:00:50, BeaT Adrian (<a href="mailto:aditza8@gmail.com" target="_blank">aditza8@gmail.com</a>) wrote:<br>


> > After a while (I guess 65500 requests) a problem occurs halting<br>
> all writes<br>
> "Could not create channel. Connection has no open channel slots<br>
> remaining"<br>
><br>
> From what I have read in the sources is because every tcp connection<br>
> have an autoincrement channel ID that reaches its max. This happens<br>
> because every request must use the channel, and is no way to use<br>
> the same channel ( I could not find a way into the php-amqp channel<br>
> classs to make it persistent) and scripts cannot communicate<br>
> ( to use the same instance of the channel as php object).<br>
<br>
</div>Every AMQP 0-9-1 connection has 1 or more channels (the max is negotiated<br>
between client and server, so this can be limited by the broker). If you<br>
open a lot of channels, you need to close them, or use more than 1 connection<br>
(which in turn will use more than 1 TCP connection).<br>
<br>
Both channels and especially connections in practice take up some resources.<br>
It is very rare that an app actually needs 1000s or 10s of 1000s of channels.<br>
<br>
See <a href="http://www.rabbitmq.com/tutorials/amqp-concepts.html" target="_blank">http://www.rabbitmq.com/tutorials/amqp-concepts.html</a> if you need a more<br>
detailed explanation.<br>
<br>
By the way, it is highly recommended that you use <a href="https://github.com/videlalvaro/php-amqplib" target="_blank">https://github.com/videlalvaro/php-amqplib</a><br>
and not the PECL extension (which is not actively maintained AFAIK).<br>
--<br>
MK<br>
<br>
Software Engineer, Pivotal/RabbitMQ<br></div></div>
_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com" target="_blank">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
</blockquote></div><br></div>
</blockquote></div><br></div>