On Tue, Aug 16, 2011 at 7:44 AM, Tihomir Culjaga <
tculjaga@gmail.com> wrote:
>
>
> On Mon, Aug 15, 2011 at 6:30 PM, Anthony Minessale
> <
anthony.minessale@gmail.com> wrote:
>>
>> You must have something setup strangely cos it would definitely reduce
>> your overall cps to use ESL but not down to 2 CPS.
>>
>> Did you look over the server stats like top etc and look for any
>> misconfiguration?
>>
> Hello Anthony, thanks for your response....
>
> yay, i found the cause .... testserver and FS were running on the same
> server. The server had just 1GB of RAM and of course ... by forking
> testserver (on 8 CPS) took all the remaining RAM ending to write into swap
> ... this triggered a domino effect on the entire server becoming less and
> less responsive as testserver started to run from swap!!!... yay .. really
> bad... didn't see it happen until i started nmon ... top/htop didn't make it
> in time to show this issue..
>
> anyhow, i moved testserver to another machine reaching 35 CPS ... really
> nice indeed.
>
>
> now, having a referent point (testserver) im trying to reach that 35 CPS
> with a java application.
>
> yes, i notices few issues :=)
>
> please check:
http://pastebin.freeswitch.org/17052
>
>
> ------------------------------------snipp-----------------------------------
>
> Control: full
>
>
> // here i subscribe to all events ... well not good idea but its a start
> events plain all
>
> Content-Type: command/reply
> Reply-Text: +OK event listener enabled plain
>
> //and here i do a filter per uuid
> filter Unique-ID f7a7b97b-df96-41f3-a6a3-fdf24350a45c
>
> Content-Type: command/reply
> Reply-Text: +OK filter added.
> [Unique-ID]=[f7a7b97b-df96-41f3-a6a3-fdf24350a45c]
>
> linger
>
> Content-Type: command/reply
> Reply-Text: +OK will linger
>
>
> // here i send answer in sync mode ( i could change it into async)
> sendmsg
> call-command: execute
> execute-app-name: answer
> event-lock: true
>
> Content-Type: command/reply
> Reply-Text: +OK
>
> Content-Length: 1805
> Content-Type: text/event-plain
>
>
> --------------------------------------------------------------------------------
>
>
>
>
> so my questions:
>
> if i use <action application="socket" data="
192.168.254.99:8084 async
> full"/> and if i subscribe to "myevents" i don't need to set a filter on
> uuid and i could gain performance.
> if i use <action application="socket" data="
192.168.254.99:8084 async"/> i
> will be getting events for the call in question only... so no special
> filters needed and i could limit the number of events im subscribing
>
>
> what is a better approach in a matter of performance ?
> What do i loose/gain by using async full vs async mode ?
>
>
>
> Thanks for your answer,
> Tihomir.
>
>
>
>
>
>
>
>
>>
>> On Thu, Aug 11, 2011 at 6:56 PM, Tihomir Culjaga <
tculjaga@gmail.com>
>> wrote:
>> > is there any other method than esl to controll calls on FS from an
>> > eternal
>> > application?
>> > will mod_curl or mod_xml_curl get better performance?
>> >
>> > T.
>> >
>> > On Fri, Aug 12, 2011 at 1:33 AM, Tihomir Culjaga <
tculjaga@gmail.com>
>> > wrote:
>> >>
>> >> Hi Anthony, thanks for your response ...
>> >>
>> >>
>> >> this is what i have:
>> >>
>> >> esl_filter(&handle, "unique-id",
>> >> esl_event_get_header(handle.info_event, "caller-unique-id"));
>> >> esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "CHANNEL_DATA
>> >> CHANNEL_EXECUTE_COMPLETE CHANNEL_HANGUP");
>> >>
>> >> what do you suggest i put there ?
>> >>
>> >>
>> >> is the inbound method less costly ?
>> >>
>> >>
>> >>
>> >>
>> >> I modified testserver.c just a bit...
>> >>
>> >> #include <sys/types.h> /* include this before any other sys headers */
>> >> #include <sys/wait.h> /* header for waitpid() and various macros */
>> >> #include <signal.h> /* header for signal functions */
>> >> #include <stdio.h> /* header for fprintf() */
>> >> #include <unistd.h> /* header for fork() */
>> >> #include <stdlib.h>
>> >> #include <esl.h>
>> >>
>> >> void sig_chld(int); /* prototype for our SIGCHLD handler */
>> >>
>> >> static void mycallback(esl_socket_t server_sock, esl_socket_t
>> >> client_sock,
>> >> struct sockaddr_in *addr)
>> >> {
>> >> esl_handle_t handle = {{0}};
>> >> int done = 0;
>> >> esl_status_t status;
>> >> time_t exp = 0;
>> >>
>> >> if (fork() != 0) {
>> >> close(client_sock);
>> >> return;
>> >> }
>> >>
>> >> esl_attach_handle(&handle, client_sock, addr);
>> >>
>> >> esl_log(ESL_LOG_INFO, "Connected! %d\n", handle.sock);
>> >>
>> >> esl_filter(&handle, "unique-id",
>> >> esl_event_get_header(handle.info_event, "caller-unique-id"));
>> >> esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "CHANNEL_DATA
>> >> CHANNEL_EXECUTE_COMPLETE CHANNEL_HANGUP");
>> >>
>> >> esl_send_recv(&handle, "linger");
>> >>
>> >> esl_execute(&handle, "answer", NULL, NULL);
>> >> //esl_execute(&handle, "conference", "3000@default", NULL);
>> >> esl_execute(&handle, "playback",
>> >> "/home/tculjaga/myWavFile.wav",
>> >> NULL);
>> >> //esl_execute(&handle, "sleep", "1000", NULL);
>> >> //esl_execute(&handle, "hangup", NULL, NULL);
>> >>
>> >> while((status = esl_recv_timed(&handle, 1000)) != ESL_FAIL) {
>> >> if (done) {
>> >> if (time(NULL) >= exp) {
>> >> break;
>> >> }
>> >> } else if (status == ESL_SUCCESS) {
>> >> const char *type =
>> >> esl_event_get_header(handle.last_event, "content-type");
>> >> if (type && !strcasecmp(type,
>> >> "text/disconnect-notice")) {
>> >> const char *dispo =
>> >> esl_event_get_header(handle.last_event, "content-disposition");
>> >> esl_log(ESL_LOG_INFO, "Got a
>> >> disconnection
>> >> notice dispostion: [%s]\n", dispo ? dispo : "");
>> >> if (!strcmp(dispo, "linger")) {
>> >> done = 1;
>> >> esl_log(ESL_LOG_INFO, "Waiting
>> >> 5
>> >> seconds for any remaining events.\n");
>> >> exp = time(NULL) + 5;
>> >> }
>> >> }
>> >> }
>> >> }
>> >>
>> >> esl_log(ESL_LOG_INFO, "Disconnected! %d\n", handle.sock);
>> >> esl_disconnect(&handle);
>> >>
>> >> close(client_sock);
>> >>
>> >> _exit(0);
>> >> }
>> >>
>> >> /*
>> >> * The signal handler function -- only gets called when a SIGCHLD
>> >> * is received, ie when a child terminates
>> >> */
>> >> void sig_chld(int signo)
>> >> {
>> >> int status;
>> >>
>> >> /* Wait for any child without blocking */
>> >> if (waitpid(-1, &status, WNOHANG) < 0)
>> >> {
>> >> /*
>> >> * calling standard I/O functions like fprintf() in a
>> >> * signal handler is not recommended, but probably OK
>> >> * in toy programs like this one.
>> >> */
>> >> fprintf(stderr, "waitpid failed\n");
>> >> return;
>> >> }
>> >> }
>> >>
>> >> int main(void)
>> >> {
>> >> struct sigaction act;
>> >>
>> >> /* Assign sig_chld as our SIGCHLD handler */
>> >> act.sa_handler = sig_chld;
>> >>
>> >> /* We don't want to block any other signals in this example */
>> >> sigemptyset(&act.sa_mask);
>> >>
>> >> /*
>> >> * We're only interested in children that have terminated, not
>> >> ones
>> >> * which have been stopped (eg user pressing control-Z at
>> >> terminal)
>> >> */
>> >> act.sa_flags = SA_NOCLDSTOP;
>> >>
>> >> /*
>> >> * Make these values effective. If we were writing a real
>> >> * application, we would probably save the old value instead of
>> >> * passing NULL.
>> >> */
>> >> /* if (sigaction(SIGCHLD, &act, NULL) < 0)
>> >> {
>> >> fprintf(stderr, "sigaction failed\n");
>> >> return 1;
>> >> }
>> >> */
>> >> signal(SIGCHLD, SIG_IGN);
>> >>
>> >> esl_global_set_default_logger(0);
>> >> esl_listen("localhost", 8088, mycallback);
>> >>
>> >> return 0;
>> >> }
>> >>
>> >>
>> >>
>> >>
>> >> On Thu, Aug 11, 2011 at 9:59 PM, Anthony Minessale
>> >> <
anthony.minessale@gmail.com> wrote:
>> >>>
>> >>> try removing the filter and event subscriptions
>> >>> it's costly to consume all of the events especially at 75cps.
>> >>>
>> >>>
>> >>> On Thu, Aug 11, 2011 at 5:23 AM, Tihomir Culjaga <
tculjaga@gmail.com>
>> >>> wrote:
>> >>> > hello,
>> >>> >
>> >>> > im wondering how much performance do we loose when using ESL instead
>> >>> > of
>> >>> > running it via dialplan?
>> >>> >
>> >>> >
>> >>> > without ESL with a fine tuned FS and a short dialplan ( answer,
>> >>> > playback
>> >>> > like 20 seconds file, hangup ) im able to service 75 CPS. On the
>> >>> > same
>> >>> > FS,
>> >>> > when i use ESL to answer the call, playback the same file and
>> >>> > hangup,
>> >>> > im not
>> >>> > able to run more than 2 CPS... this is a huge impact and i really
>> >>> > can't
>> >>> > believe it.
>> >>> >
>> >>> > I'm using event-socket outbound e.g.:
>> >>> >
>> >>> > <action application="socket" data="
127.0.0.1:8088 async full"/>
>> >>> >
>> >>> > my extension looks like:
>> >>> >
>> >>> > <extension name="ESL_C">
>> >>> > <condition field="destination_number" expression="^(6666)$">
>> >>> > <action application="socket" data="
127.0.0.1:8088 async full"/>
>> >>> > <action application="sleep" data="1000"/>
>> >>> > <action application="hangup"/>
>> >>> > </condition>
>> >>> > </extension>
>> >>> >
>> >>> >
>> >>> > im using testserver from lib/esl/ and i just removed the conference
>> >>> > command
>> >>> > and added the playback one.... also i moved the esl_debug lvl to 0
>> >>> >
>> >>> >
>> >>> > anyhow, FS cannot run more than 2 CPS compared to 75 CPS when the
>> >>> > playback
>> >>> > is done from the dialplan.
>> >>> >
>> >>> >
>> >>> > Please, can someone give me a clue on what is going on?
>> >>> > Maybe im doing something wrong?
>> >>> > how to get maximum FS performance using ESL ?
>> >>> >
>> >>> >
>> >>> >
>> >>> > Regards,
>> >>> > Tihomir.
>> >>> >
>> >>> >
>> >>> > _______________________________________________
>> >>> > Join us at ClueCon 2011, Aug 9-11, Chicago
>> >>> >
http://www.cluecon.com 877-7-4ACLUE
>> >>> >
>> >>> > FreeSWITCH-users mailing list
>> >>> >
FreeSWITCH-users@lists.freeswitch.org
>> >>> >
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> >>> >
>> >>> >
>> >>> > UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
>> >>> >
http://www.freeswitch.org
>> >>> >
>> >>> >
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Anthony Minessale II
>> >>>
>> >>> FreeSWITCH
http://www.freeswitch.org/
>> >>> ClueCon
http://www.cluecon.com/
>> >>> Twitter:
http://twitter.com/FreeSWITCH_wire
>> >>>
>> >>> AIM: anthm
>> >>>
MSN:anthony_minessale@hotmail.com
>> >>> GTALK/JABBER/
PAYPAL:anthony.minessale@gmail.com
>> >>> IRC:
irc.freenode.net #freeswitch
>> >>>
>> >>> FreeSWITCH Developer Conference
>> >>>
sip:888@conference.freeswitch.org
>> >>>
googletalk:conf+888@conference.freeswitch.org
>> >>> pstn:
+19193869900
>> >>>
>> >>> _______________________________________________
>> >>> Join us at ClueCon 2011, Aug 9-11, Chicago
>> >>>
http://www.cluecon.com 877-7-4ACLUE
>> >>>
>> >>> FreeSWITCH-users mailing list
>> >>>
FreeSWITCH-users@lists.freeswitch.org
>> >>>
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> >>>
>> >>> UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
>> >>>
http://www.freeswitch.org
>> >>
>> >
>> >
>> > _______________________________________________
>> > Join us at ClueCon 2011, Aug 9-11, Chicago
>> >
http://www.cluecon.com 877-7-4ACLUE
>> >
>> > FreeSWITCH-users mailing list
>> >
FreeSWITCH-users@lists.freeswitch.org
>> >
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
>> >
http://www.freeswitch.org
>> >
>> >
>>
>>
>>
>> --
>> Anthony Minessale II
>>
>> FreeSWITCH
http://www.freeswitch.org/
>> ClueCon
http://www.cluecon.com/
>> Twitter:
http://twitter.com/FreeSWITCH_wire
>>
>> AIM: anthm
>>
MSN:anthony_minessale@hotmail.com
>> GTALK/JABBER/
PAYPAL:anthony.minessale@gmail.com
>> IRC:
irc.freenode.net #freeswitch
>>
>> FreeSWITCH Developer Conference
>>
sip:888@conference.freeswitch.org
>>
googletalk:conf+888@conference.freeswitch.org
>> pstn:
+19193869900
>>
>>
>> FreeSWITCH-users mailing list
>>
FreeSWITCH-users@lists.freeswitch.org
>>
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
>>
http://www.freeswitch.org
>
>
>
> FreeSWITCH-users mailing list
>
FreeSWITCH-users@lists.freeswitch.org
>
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
>
http://www.freeswitch.org
>
>
--
Anthony Minessale II
FreeSWITCH
http://www.freeswitch.org/
ClueCon
http://www.cluecon.com/
Twitter:
http://twitter.com/FreeSWITCH_wire
AIM: anthm
MSN:anthony_minessale@hotmail.com
GTALK/JABBER/
PAYPAL:anthony.minessale@gmail.com
IRC:
irc.freenode.net #freeswitch
FreeSWITCH Developer Conference
sip:888@conference.freeswitch.org
googletalk:conf+888@conference.freeswitch.org
pstn:
+19193869900
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org