MESSAGE
DATE | 2020-12-22 |
FROM | Mithun Bhattacharya
|
SUBJECT | Re: [Hangout - NYLXS] suggestions for perl as web development
|
From hangout-bounces-at-nylxs.com Tue Dec 22 15:33:19 2020 Return-Path: X-Original-To: archive-at-mrbrklyn.com Delivered-To: archive-at-mrbrklyn.com Received: from www2.mrbrklyn.com (www2.mrbrklyn.com [96.57.23.82]) by mrbrklyn.com (Postfix) with ESMTP id 91A16163F9E; Tue, 22 Dec 2020 15:33:15 -0500 (EST) X-Original-To: hangout-at-www2.mrbrklyn.com Delivered-To: hangout-at-www2.mrbrklyn.com Received: by mrbrklyn.com (Postfix, from userid 1000) id 3E703163F5E; Tue, 22 Dec 2020 15:32:26 -0500 (EST) Resent-From: Ruben Safir Resent-Date: Tue, 22 Dec 2020 15:32:26 -0500 Resent-Message-ID: <20201222203226.GB17865-at-www2.mrbrklyn.com> Resent-To: hangout-at-mrbrklyn.com X-Original-To: ruben-at-mrbrklyn.com Delivered-To: ruben-at-mrbrklyn.com Received: from mxout1-he-de.apache.org (mxout1-he-de.apache.org [95.216.194.37]) by mrbrklyn.com (Postfix) with ESMTP id 533B2163F8F for ; Tue, 22 Dec 2020 11:31:55 -0500 (EST) Received: from mail.apache.org (mailroute1-lw-us.apache.org [207.244.88.153]) by mxout1-he-de.apache.org (ASF Mail Server at mxout1-he-de.apache.org) with SMTP id E3CE1665F8 for ; Tue, 22 Dec 2020 16:31:53 +0000 (UTC) Received: (qmail 46195 invoked by uid 500); 22 Dec 2020 16:31:53 -0000 Mailing-List: contact modperl-help-at-perl.apache.org; run by ezmlm Precedence: bulk Delivered-To: mailing list modperl-at-perl.apache.org Received: (qmail 46183 invoked by uid 99); 22 Dec 2020 16:31:52 -0000 Received: from spamproc1-he-fi.apache.org (HELO spamproc1-he-fi.apache.org) (95.217.134.168) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Dec 2020 16:31:52 +0000 Received: from localhost (localhost [127.0.0.1]) by spamproc1-he-fi.apache.org (ASF Mail Server at spamproc1-he-fi.apache.org) with ESMTP id F227DC04BE for ; Tue, 22 Dec 2020 16:31:51 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamproc1-he-fi.apache.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.2, LH_URI_DOM_IN_PATH=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamproc1-he-fi.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-ec2-va.apache.org ([116.203.227.195]) by localhost (spamproc1-he-fi.apache.org [95.217.134.168]) (amavisd-new, port 10024) with ESMTP id EKuyzX_p9yJt for ; Tue, 22 Dec 2020 16:31:50 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.221.181; helo=mail-vk1-f181.google.com; envelope-from=mithnb-at-gmail.com; receiver= Received: from mail-vk1-f181.google.com (mail-vk1-f181.google.com [209.85.221.181]) by mx1-ec2-va.apache.org (ASF Mail Server at mx1-ec2-va.apache.org) with ESMTPS id 18D18BC91D for ; Tue, 22 Dec 2020 16:31:50 +0000 (UTC) Received: by mail-vk1-f181.google.com with SMTP id d6so3143587vkb.13 for ; Tue, 22 Dec 2020 08:31:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=wGzxqjeoMrwSLIJYfqdxrrktuMdlb/1BwmdjOnubgCI=; b=OG8POTOLoXR5cCytOd3htX3UKHj4NCk3uMPPN3nrkq0ARPYHQGK939IAkfMBS40KCs s4N5GF7A8tI2BgvuYf5IZCEFF2ai2wZBPUfEPu53Ur1zj35LE+yz6DDZPePuQwsRAPmN 4RlZdZhUoHY4YAG2YJNbdcYhXWEhMY89ifjg/l4UMj45NpnfrIgyvMumDJ3fxSfIJC9m UwjwJ40ZG9J2jP446QwFA4kOAXkqZ91YIO5Y5OSRw7eJoLIUC7Q8VSW+MdRSG3N7w95a q06CNhzVnbf3Z1/CblzORlLu2/DSzo2h0BxdV/XbBFfqX5nb6xPTITdRgXSmmS28heOe Taow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=wGzxqjeoMrwSLIJYfqdxrrktuMdlb/1BwmdjOnubgCI=; b=B2lp+UrEQccNck6HGOOYWq1xmregeu+O1xwnPs5MhrqDiPw4IiG17PWhuZErOURBFA NBwphNHeuvdDKdr7igoWKFCbLKWSQuNIkdqCNix1OpZGXrIZ4r96yNQPmvqn0fEU++uK BguQgLVh2n1E2z0nSW+W9v5A5qELR5vh54Eic8k87i7sBzAEGjE9P2cxTp+I6roBS0l/ 3uzR8ybSpWCGD50srGQ8RiWtdbHUrMyGncNe1+KORs4CwIZmvntH/qFGEbqI3ejbmxbJ /qi/dLb9bCUfB9wWAqp83Pk765T93XkLQ+Ukz4YwhRxRQ6sSnVxIG6Aeh7nV8dSI32/w 2ALA== X-Gm-Message-State: AOAM53037g/6bcaSDdle16SRtnhPwDnwVfh4hQiauAtKZRFslMwLnPPU bunq0ovb6AgUTby+YmbcCGcRT2l7WHnYxWbjfCryzhT8 X-Google-Smtp-Source: ABdhPJxavG/WkuWaZZFtBwZ95OudTXJ/nya3wcLtMP7XrQFt5uv/n/QIrQojiD832tjeVJzPS7S/i1EhCqs3FsLxRHY= X-Received: by 2002:a1f:27cf:: with SMTP id n198mr15026253vkn.16.1608654703224; Tue, 22 Dec 2020 08:31:43 -0800 (PST) MIME-Version: 1.0 References: <27779c3e56564c73a7fa49b49cc3f9f0-at-sanger.ac.uk> <20201221050824.c1f73f5de5d2d3431da6a7e5-at-wanadoo.fr> <20201221082642.026e4cabffa471f68fd7a53a-at-wanadoo.fr> <71d95b7caf4b4ebcbce3d9cf6e4f3dc4-at-sanger.ac.uk> In-Reply-To: From: Mithun Bhattacharya Date: Tue, 22 Dec 2020 10:31:31 -0600 Message-ID: To: mod_perl list Subject: Re: [Hangout - NYLXS] suggestions for perl as web development language [EXT] X-BeenThere: hangout-at-nylxs.com X-Mailman-Version: 2.1.30rc1 List-Id: NYLXS Tech Talk and Politics List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0671940988==" Errors-To: hangout-bounces-at-nylxs.com Sender: "Hangout"
--===============0671940988== Content-Type: multipart/related; boundary="000000000000275d0805b7101c45"
--000000000000275d0805b7101c45 Content-Type: multipart/alternative; boundary="000000000000275d0605b7101c44"
--000000000000275d0605b7101c44 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sounds like a classic use case for Kafka - your service should publish when done and your clients should subscribe to their relevant topics. This is not going to be scalable even with websockets.
On Tue, Dec 22, 2020 at 9:06 AM John Dunlap wrote:
> We have hundreds of users polling our servers every few seconds just > waiting for events. In the near future, I'm going to have to do a refacto= r > to avoid users polling two different endpoints for different kinds of > events. The vast majority of the request in our access logs are polling > requests and they put significant load on our systems that I would prefer > to avoid. Additionally, web sockets aren't just for pushing content to th= e > browser. If you use them in the opposite direction, they improve > performance because you can avoid opening/closing a new connection and > because you can avoid the overhead of the HTTP protocol resulting in > shorter request times. > > On Tue, Dec 22, 2020 at 8:32 AM James Smith wrote: > >> There are not many applications which really benefit from multiple >> threads in web server environments unless you have very low load =E2=80= =93 as they >> are only efficient as they can use multiple cores, so you need stupidly >> speced machines to manage this load properly, and if you are using exter= nal >> resources can often be blocking anyway. >> >> Yes mod_perl doesn=E2=80=99t do web-sockets =E2=80=93 but usually that i= sn=E2=80=99t an issue >> unless you have the need to push when people update content and you want= it >> immediately available. There are others issues to consider with web-sock= ets >> e.g. port usage to keep the connections open. If you don=E2=80=99t need = that >> immediate response =E2=80=93 polling can achieve the desired effect =E2= =80=93 and Apache >> can even tell the client how long you need to wait before you send anoth= er >> connection. >> >> >> >> >> >> *From:* John Dunlap >> *Sent:* 22 December 2020 13:35 >> *To:* Vincent Veyron >> *Cc:* mod_perl list >> *Subject:* Re: suggestions for perl as web development language [EXT] >> >> >> >> mod_perl is horribly inefficient because prefork is inefficient and >> because each request is single threaded. In addition to this, mod_perl a= lso >> cannot provide websockets which are essential in a modern application. >> >> >> >> On Mon, Dec 21, 2020 at 1:26 AM Vincent Veyron >> wrote: >> >> >> [You forgot to cc the list ] >> >> On Sun, 20 Dec 2020 23:16:03 -0500 >> John Dunlap wrote: >> >> > We run 20 customers on a single box and our database has approximately >> 500 >> > tables. We run hundreds or thousands of queries per second. >> > >> >> 500 tables is a lot more than what I typically handle. I'm sure it >> complicates things. >> >> But see this post by James Smith in a recent thread : >> >> http://mail-archives.apache.org/mod_mbox/perl-modperl/202008.mbox/ajax/%= 3Cef383804cf394c53b48258531891d12b%40sanger.ac.uk%3E >> [mail-archives.apache.org] >> pache.org_mod-5Fmbox_perl-2Dmodperl_202008.mbox_ajax_-253Cef383804cf394c53b= 48258531891d12b-2540sanger.ac.uk-253E&d=3DDwMFaQ&c=3DD7ByGjS34AllFgecYw0iC6= Zq7qlm8uclZFI0SqQnqBo&r=3DoH2yp0ge1ecj4oDX0XM7vQ&m=3Dd_ZhFPlvaXw1KbAmeExguX= y1fSbpEKzIuAPZMOJ9h78&s=3DnK2GCkR9GuTuv3TffZBjRZgIDya7tetj5oHLLDBsn18&e=3D> >> >> Easier to read in this archive : >> >> http://mail-archives.apache.org/mod_mbox/perl-modperl/202008.mbox/browse= r >> [mail-archives.apache.org] >> pache.org_mod-5Fmbox_perl-2Dmodperl_202008.mbox_browser&d=3DDwMFaQ&c=3DD7By= GjS34AllFgecYw0iC6Zq7qlm8uclZFI0SqQnqBo&r=3DoH2yp0ge1ecj4oDX0XM7vQ&m=3Dd_Zh= FPlvaXw1KbAmeExguXy1fSbpEKzIuAPZMOJ9h78&s=3DOm-DkyClcEdOiq5HBizz-ydRhOziZbA= P-AL_sR0eXAE&e=3D> >> >> I also remember a post by a chinese guy who handled the same order of >> database size, in which he wrote that he had compared several frameworks >> and mod_perl was the fastest; but that was something like 10 years ago, = and >> I can't find it anymore. >> >> So I'm not sure how mod_perl could handle that kind of load and be >> horribly inefficient? >> >> (I forgot to say in my previous post that over 50% of the time used by m= y >> script is spent on the _one_ query out of 120 that writes a smallish >> session hash to disk) >> >> -- >> Bien =C3=A0 vous, Vincent Veyron >> >> https://compta.libremen.com [compta.libremen.com] >> com&d=3DDwMFaQ&c=3DD7ByGjS34AllFgecYw0iC6Zq7qlm8uclZFI0SqQnqBo&r=3DoH2yp0ge= 1ecj4oDX0XM7vQ&m=3Dd_ZhFPlvaXw1KbAmeExguXy1fSbpEKzIuAPZMOJ9h78&s=3DmT-OlBL9= 8gDcEsBMBidxank1GbEXq2zX6zPGOmpwobU&e=3D> >> Logiciel libre de comptabilit=C3=A9 g=C3=A9n=C3=A9rale en partie double >> >> >> >> -- >> >> John Dunlap >> >> CTO | Lariat >> >> >> >> *Direct:* >> >> john-at-lariat.co >> >> >> *Customer Service:* >> >> 877.268.6667 >> >> support-at-lariat.co >> >> -- The Wellcome Sanger Institute is operated by Genome Research Limited, >> a charity registered in England with number 1021457 and a company >> registered in England with number 2742969, whose registered office is 21= 5 >> Euston Road, London, NW1 2BE. >> > > > -- > John Dunlap > *CTO | Lariat * > > *Direct:* > *john-at-lariat.co * > > *Customer Service:* > 877.268.6667 > support-at-lariat.co >
--000000000000275d0605b7101c44 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sounds like a classic use case for Kafka - your service sh= ould publish when done and your clients should subscribe to their relevant = topics. This is not going to be scalable even with websockets. v class=3D"gmail_quote">"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le= ft:1ex">We have hundreds of users polling our servers ever= y few seconds just waiting for events. In the near future, I'm going to= have to do a refactor to avoid users polling two different endpoints for d= ifferent kinds of events. The vast majority of the request in our access lo= gs are polling requests and they put significant load on our systems that I= would prefer to avoid. Additionally, web sockets aren't just for pushi= ng content to the browser. If you use them in the opposite direction, they = improve performance because you can avoid opening/closing a new connection = and because you can avoid the overhead of the HTTP protocol resulting in sh= orter request times.
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
There are not many applications which really b= enefit from multiple threads in web server environments unless you have ver= y low load =E2=80=93 as they are only efficient as they can use multiple co= res, so you need stupidly speced machines to manage this load properly, and if you= are using external resources can often be blocking anyway.
Yes mod_perl doesn=E2=80=99t do web-sockets =E2=80=93 but usually that isn= =E2=80=99t an issue unless you have the need to push when people update con= tent and you want it immediately available. There are others issues to cons= ider with web-sockets e.g. port usage to keep the connections open. If you don=E2=80=99t need that immediate response =E2=80=93 polling = can achieve the desired effect =E2=80=93 and Apache can even tell the clien= t how long you need to wait before you send another connection.= u> =C2=A0 =C2=A0 =C2=A0 mod_perl is horribly inefficient because prefork is = inefficient and because each request is single threaded. In addition to thi= s, mod_perl also cannot provide websockets which are essential in a modern = application. =C2=A0
--
uchet MS",sans-serif;color:rgb(68,68,68)">John Dunlape=3D"font-size:12pt;font-family:Arial,sans-serif"> s-serif;color:rgb(153,153,153)">CTO |=C2=A012pt;font-family:Tahoma,sans-serif;color:rgb(255,153,0)">Lariat style=3D"font-size:12pt;font-family:Tahoma,sans-serif;color:rgb(153,153,15= 3)">=C2=A0"> sans-serif;color:rgb(153,153,153)">Direct:ze:12pt;font-family:Arial,sans-serif"> s-serif;color:rgb(153,153,153)">
Customer Service:ial,sans-serif"> -serif;color:rgb(153,153,153)">877.268.666712pt;font-family:Arial,sans-serif"> -serif">70393277201468gmail-m_-9096722254939339632Picture_x0020_1" src=3D"cid:1768a= f258304cff311" width=3D"100" height=3D"60" border=3D"0">=3D"font-size:12pt;font-family:Arial,sans-serif"> --=20 The Wellcome Sanger Institute is operated by Genome Research=20 Limited, a charity registered in England with number 1021457 and a=20 company registered in England with number 2742969, whose registered=20 office is 215 Euston Road, London, NW1 2BE.=20
--
=3D"ltr"> lor:rgb(68,68,68);font-family:"trebuchet ms",sans-serif;font-size= :large">John Dunlap
ly:arial">n style=3D"color:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:= normal">CTO |=C2=A0-style:normal">Lariatolor:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:normal">=C2= =A0
style=3D"font-family:"trebuchet ms",sans-serif">olor:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:normal"> =
=3D"font-family:"trebuchet ms",sans-serif">gb(153,153,153);font-family:tahoma,sans-serif;font-style:normal">Direct:=
ly:arial">n style=3D"color:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:= normal"> Customer Service: =3D"font-size:small;font-family:arial"> 83171a8e6" width=3D"100" height=3D"60">
--000000000000275d0605b7101c44--
--000000000000275d0805b7101c45 Content-Type: image/png; name="image001.png" Content-Disposition: inline; filename="image001.png" Content-Transfer-Encoding: base64 Content-ID: <1768af258304cff311> X-Attachment-Id: 1768af258304cff311
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 --000000000000275d0805b7101c45 Content-Type: image/png; name="100x60.png" Content-Disposition: inline; filename="100x60.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_hwm90qu91_146b4d583171a8e6
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 --000000000000275d0805b7101c45--
--===============0671940988== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline
_______________________________________________ Hangout mailing list Hangout-at-nylxs.com http://lists.mrbrklyn.com/mailman/listinfo/hangout
--===============0671940988==--
--===============0671940988== Content-Type: multipart/related; boundary="000000000000275d0805b7101c45"
--000000000000275d0805b7101c45 Content-Type: multipart/alternative; boundary="000000000000275d0605b7101c44"
--000000000000275d0605b7101c44 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sounds like a classic use case for Kafka - your service should publish when done and your clients should subscribe to their relevant topics. This is not going to be scalable even with websockets.
On Tue, Dec 22, 2020 at 9:06 AM John Dunlap wrote:
> We have hundreds of users polling our servers every few seconds just > waiting for events. In the near future, I'm going to have to do a refacto= r > to avoid users polling two different endpoints for different kinds of > events. The vast majority of the request in our access logs are polling > requests and they put significant load on our systems that I would prefer > to avoid. Additionally, web sockets aren't just for pushing content to th= e > browser. If you use them in the opposite direction, they improve > performance because you can avoid opening/closing a new connection and > because you can avoid the overhead of the HTTP protocol resulting in > shorter request times. > > On Tue, Dec 22, 2020 at 8:32 AM James Smith wrote: > >> There are not many applications which really benefit from multiple >> threads in web server environments unless you have very low load =E2=80= =93 as they >> are only efficient as they can use multiple cores, so you need stupidly >> speced machines to manage this load properly, and if you are using exter= nal >> resources can often be blocking anyway. >> >> Yes mod_perl doesn=E2=80=99t do web-sockets =E2=80=93 but usually that i= sn=E2=80=99t an issue >> unless you have the need to push when people update content and you want= it >> immediately available. There are others issues to consider with web-sock= ets >> e.g. port usage to keep the connections open. If you don=E2=80=99t need = that >> immediate response =E2=80=93 polling can achieve the desired effect =E2= =80=93 and Apache >> can even tell the client how long you need to wait before you send anoth= er >> connection. >> >> >> >> >> >> *From:* John Dunlap >> *Sent:* 22 December 2020 13:35 >> *To:* Vincent Veyron >> *Cc:* mod_perl list >> *Subject:* Re: suggestions for perl as web development language [EXT] >> >> >> >> mod_perl is horribly inefficient because prefork is inefficient and >> because each request is single threaded. In addition to this, mod_perl a= lso >> cannot provide websockets which are essential in a modern application. >> >> >> >> On Mon, Dec 21, 2020 at 1:26 AM Vincent Veyron >> wrote: >> >> >> [You forgot to cc the list ] >> >> On Sun, 20 Dec 2020 23:16:03 -0500 >> John Dunlap wrote: >> >> > We run 20 customers on a single box and our database has approximately >> 500 >> > tables. We run hundreds or thousands of queries per second. >> > >> >> 500 tables is a lot more than what I typically handle. I'm sure it >> complicates things. >> >> But see this post by James Smith in a recent thread : >> >> http://mail-archives.apache.org/mod_mbox/perl-modperl/202008.mbox/ajax/%= 3Cef383804cf394c53b48258531891d12b%40sanger.ac.uk%3E >> [mail-archives.apache.org] >> pache.org_mod-5Fmbox_perl-2Dmodperl_202008.mbox_ajax_-253Cef383804cf394c53b= 48258531891d12b-2540sanger.ac.uk-253E&d=3DDwMFaQ&c=3DD7ByGjS34AllFgecYw0iC6= Zq7qlm8uclZFI0SqQnqBo&r=3DoH2yp0ge1ecj4oDX0XM7vQ&m=3Dd_ZhFPlvaXw1KbAmeExguX= y1fSbpEKzIuAPZMOJ9h78&s=3DnK2GCkR9GuTuv3TffZBjRZgIDya7tetj5oHLLDBsn18&e=3D> >> >> Easier to read in this archive : >> >> http://mail-archives.apache.org/mod_mbox/perl-modperl/202008.mbox/browse= r >> [mail-archives.apache.org] >> pache.org_mod-5Fmbox_perl-2Dmodperl_202008.mbox_browser&d=3DDwMFaQ&c=3DD7By= GjS34AllFgecYw0iC6Zq7qlm8uclZFI0SqQnqBo&r=3DoH2yp0ge1ecj4oDX0XM7vQ&m=3Dd_Zh= FPlvaXw1KbAmeExguXy1fSbpEKzIuAPZMOJ9h78&s=3DOm-DkyClcEdOiq5HBizz-ydRhOziZbA= P-AL_sR0eXAE&e=3D> >> >> I also remember a post by a chinese guy who handled the same order of >> database size, in which he wrote that he had compared several frameworks >> and mod_perl was the fastest; but that was something like 10 years ago, = and >> I can't find it anymore. >> >> So I'm not sure how mod_perl could handle that kind of load and be >> horribly inefficient? >> >> (I forgot to say in my previous post that over 50% of the time used by m= y >> script is spent on the _one_ query out of 120 that writes a smallish >> session hash to disk) >> >> -- >> Bien =C3=A0 vous, Vincent Veyron >> >> https://compta.libremen.com [compta.libremen.com] >> com&d=3DDwMFaQ&c=3DD7ByGjS34AllFgecYw0iC6Zq7qlm8uclZFI0SqQnqBo&r=3DoH2yp0ge= 1ecj4oDX0XM7vQ&m=3Dd_ZhFPlvaXw1KbAmeExguXy1fSbpEKzIuAPZMOJ9h78&s=3DmT-OlBL9= 8gDcEsBMBidxank1GbEXq2zX6zPGOmpwobU&e=3D> >> Logiciel libre de comptabilit=C3=A9 g=C3=A9n=C3=A9rale en partie double >> >> >> >> -- >> >> John Dunlap >> >> CTO | Lariat >> >> >> >> *Direct:* >> >> john-at-lariat.co >> >> >> *Customer Service:* >> >> 877.268.6667 >> >> support-at-lariat.co >> >> -- The Wellcome Sanger Institute is operated by Genome Research Limited, >> a charity registered in England with number 1021457 and a company >> registered in England with number 2742969, whose registered office is 21= 5 >> Euston Road, London, NW1 2BE. >> > > > -- > John Dunlap > *CTO | Lariat * > > *Direct:* > *john-at-lariat.co * > > *Customer Service:* > 877.268.6667 > support-at-lariat.co >
--000000000000275d0605b7101c44 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sounds like a classic use case for Kafka - your service sh= ould publish when done and your clients should subscribe to their relevant = topics. This is not going to be scalable even with websockets. v class=3D"gmail_quote">"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le= ft:1ex">We have hundreds of users polling our servers ever= y few seconds just waiting for events. In the near future, I'm going to= have to do a refactor to avoid users polling two different endpoints for d= ifferent kinds of events. The vast majority of the request in our access lo= gs are polling requests and they put significant load on our systems that I= would prefer to avoid. Additionally, web sockets aren't just for pushi= ng content to the browser. If you use them in the opposite direction, they = improve performance because you can avoid opening/closing a new connection = and because you can avoid the overhead of the HTTP protocol resulting in sh= orter request times.
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
There are not many applications which really b= enefit from multiple threads in web server environments unless you have ver= y low load =E2=80=93 as they are only efficient as they can use multiple co= res, so you need stupidly speced machines to manage this load properly, and if you= are using external resources can often be blocking anyway.
Yes mod_perl doesn=E2=80=99t do web-sockets =E2=80=93 but usually that isn= =E2=80=99t an issue unless you have the need to push when people update con= tent and you want it immediately available. There are others issues to cons= ider with web-sockets e.g. port usage to keep the connections open. If you don=E2=80=99t need that immediate response =E2=80=93 polling = can achieve the desired effect =E2=80=93 and Apache can even tell the clien= t how long you need to wait before you send another connection.= u> =C2=A0 =C2=A0 =C2=A0 mod_perl is horribly inefficient because prefork is = inefficient and because each request is single threaded. In addition to thi= s, mod_perl also cannot provide websockets which are essential in a modern = application. =C2=A0
--
uchet MS",sans-serif;color:rgb(68,68,68)">John Dunlape=3D"font-size:12pt;font-family:Arial,sans-serif"> s-serif;color:rgb(153,153,153)">CTO |=C2=A012pt;font-family:Tahoma,sans-serif;color:rgb(255,153,0)">Lariat style=3D"font-size:12pt;font-family:Tahoma,sans-serif;color:rgb(153,153,15= 3)">=C2=A0"> sans-serif;color:rgb(153,153,153)">Direct:ze:12pt;font-family:Arial,sans-serif"> s-serif;color:rgb(153,153,153)">
Customer Service:ial,sans-serif"> -serif;color:rgb(153,153,153)">877.268.666712pt;font-family:Arial,sans-serif"> -serif">70393277201468gmail-m_-9096722254939339632Picture_x0020_1" src=3D"cid:1768a= f258304cff311" width=3D"100" height=3D"60" border=3D"0">=3D"font-size:12pt;font-family:Arial,sans-serif"> --=20 The Wellcome Sanger Institute is operated by Genome Research=20 Limited, a charity registered in England with number 1021457 and a=20 company registered in England with number 2742969, whose registered=20 office is 215 Euston Road, London, NW1 2BE.=20
--
=3D"ltr"> lor:rgb(68,68,68);font-family:"trebuchet ms",sans-serif;font-size= :large">John Dunlap
ly:arial">n style=3D"color:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:= normal">CTO |=C2=A0-style:normal">Lariatolor:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:normal">=C2= =A0
style=3D"font-family:"trebuchet ms",sans-serif">olor:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:normal"> =
=3D"font-family:"trebuchet ms",sans-serif">gb(153,153,153);font-family:tahoma,sans-serif;font-style:normal">Direct:=
ly:arial">n style=3D"color:rgb(153,153,153);font-family:tahoma,sans-serif;font-style:= normal"> Customer Service: =3D"font-size:small;font-family:arial"> 83171a8e6" width=3D"100" height=3D"60">
--000000000000275d0605b7101c44--
--000000000000275d0805b7101c45 Content-Type: image/png; name="image001.png" Content-Disposition: inline; filename="image001.png" Content-Transfer-Encoding: base64 Content-ID: <1768af258304cff311> X-Attachment-Id: 1768af258304cff311
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 --000000000000275d0805b7101c45 Content-Type: image/png; name="100x60.png" Content-Disposition: inline; filename="100x60.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_hwm90qu91_146b4d583171a8e6
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 --000000000000275d0805b7101c45--
--===============0671940988== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline
_______________________________________________ Hangout mailing list Hangout-at-nylxs.com http://lists.mrbrklyn.com/mailman/listinfo/hangout
--===============0671940988==--
|
|