Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 8 of 8 total
Thread Web server performacne
Tue, Sep 16 2014 5:23 AMPermanent Link

westereng

Hi!

I'm investigating the use of the EWB web server for a commercial SAAS project in combination with EWB.
I like how I can develop delphi modules for it.

My question is if the webserver is up to par when it comes too reliability in the sense of speed and the ability to serve many simultaneous users.

Anyone using it for commercial purposes?

Regards
Ronny
Tue, Sep 16 2014 7:22 AMPermanent Link

Matthew Jones

westereng wrote:

> My question is if the webserver is up to par when it comes too
> reliability in the sense of speed and the ability to serve many
> simultaneous users.

I've not looked at the EWB server, but I suspect that you should do
your own independent testing of it. I used the RemObjects SDK server
which uses Indy, and worked out that I could, on an Azure virtual
machine, get 1000 calls a second without trouble. However, this was
doing little in the way of processing, and that's where it comes down
to your own situation, as it very much depends what the database is
doing, and how long that takes, etc. On my system long tasks were
queued, and on one I had the add to queue give a hint as to how long it
would be taking, so that the caller didn't check too often for
completion (which then eats resources).

If you might need scaling, then EWB may provide some of that, but again
the solution is very much down to your application.

That probably didn't help much, but it's my 2 cents worth. 8-)

--

Matthew Jones
Tue, Sep 16 2014 8:40 AMPermanent Link

Walter Matte

Tactical Business Corporation

I agree with Matthew - I wrote my own server with RealThinClient (RTC) components.  The projects I have deployed so far have been for internal consumption by client employees and with not more that maybe 20 simultaneous users with the exception of one for HSUS which was used for a 4 month fundraising campaign which served several thousand hits per day.

RTC has never failed me.  The components are rock solid and very scalable via the rtcDataRouter and rtcLoadBalancer components.

RTC has published load test results which can be viewed here:  http://www.realthinclient.com/testresults/

Highly responsive web apps, for me, boil down to optimized functions and database design in the backend.

Walter
Tue, Sep 16 2014 9:11 AMPermanent Link

Matthew Jones

Walter Matte wrote:

> RTC has never failed me.  The components are rock solid and very
> scalable via the rtcDataRouter and rtcLoadBalancer components.

I was going to include mention of the RemObjects scaling components,
but for most people it doesn't matter. If you get to that scale, you
can afford to work hard on it.

One of the reasons I like my new app - the desktop is the server, and
any user provides their own. Thus I don't worry about scaling...

--

Matthew Jones
Wed, Sep 17 2014 2:56 AMPermanent Link

westereng

Thanks for your insights. I guess some research and testing is due to see if it holds up. I will look into the others sugestions too.

Thanks!

/Ronny
Wed, Sep 17 2014 4:16 AMPermanent Link

Matthew Jones

westereng wrote:

> Thanks for your insights. I guess some research and testing is due to
> see if it holds up. I will look into the others sugestions too.

One thing - if your web site is going to be accessed by 4 million
people in 24 hours, all pressing Refresh, I'd be looking elsewhere for
your server technology. But I do think that Delphi is quite capable of
handling a fair load for corporate use of occasional interaction. You
need to have facilities to quantify the times etc. Not hard in a server
to write code to time how long a call takes, and how many per
second/minute etc.

Marco Arment on his podcasts has talked about how his servers never use
JOIN because it can scale better - having a single database server and
multiple web servers which do the joining effort allows you to add more
web servers and keep the database server load low.

For my purposes, even with 1000 users hitting per second, I was happy
that I could use JOINs etc. I'd have worried at more users, but it
wasn't likely to happen (and would have slowed responses only a little
due to the activity threads still continuing separately).

--

Matthew Jones
Wed, Sep 17 2014 5:14 AMPermanent Link

westereng

"Matthew Jones" wrote:

> One thing - if your web site is going to be accessed by 4 million
> people in 24 hours, all pressing Refresh, I'd be looking elsewhere for
> your server technology. But I do think that Delphi is quite capable of
> handling a fair load for corporate use of occasional interaction. You
> need to have facilities to quantify the times etc. Not hard in a server
> to write code to time how long a call takes, and how many per
> second/minute etc.

I think 4 million is aiming a bit high in the beginning Smile(allthoug you never know Smile

> Marco Arment on his podcasts has talked about how his servers never use
> JOIN because it can scale better - having a single database server and
> multiple web servers which do the joining effort allows you to add more
> web servers and keep the database server load low.

> For my purposes, even with 1000 users hitting per second, I was happy
> that I could use JOINs etc. I'd have worried at more users, but it
> wasn't likely to happen (and would have slowed responses only a little
> due to the activity threads still continuing separately).

Yes, joins would be preferable, but if we reach a level where this kind of optimization is needed, we will have to cross that bridge then.

I have been looking at your Remobjects suggestion, and it seems to be promising. I wonder if it is possible to write DLL modules for a remobjects sdk server, like you can for EWB server?
Wed, Sep 17 2014 7:08 AMPermanent Link

Matthew Jones

westereng wrote:

> I think 4 million is aiming a bit high in the beginning Smile(allthoug
> you never know Smile

Indeed - it was Apple "having problems" that made me think I was happy
not to have to manage their scale of orders.



> I have been looking at your Remobjects suggestion, and it seems to be
> promising. I wonder if it is possible to write DLL modules for a
> remobjects sdk server, like you can for EWB server?

Hmm, the RO SDK basically creates a Windows Service, and you can write
whatever code you want. It also includes a web server as part of the
library. Thus you can make it into whatever you want. I aim to do a
blog or two about my implementation, but am doing contract work at the
moment so haven't had time. However, given it is just Delphi, you can
get really clever. For example, I have the service auto-update itself
so it can be running happily, then I do an update from the subversion
deployment repository, and it will spot the update and shut down,
update and restart all automatically. The smart bit being that it knows
if someone has been using it recently, so it waits for 5 mins since
last user action before it does the update. Thus I don't break
someone's order process. (I can force it too as well, but obviously
don't want to use that.)

Anyway, the RO SDK includes such stuff, and the JSON library for
calling it from WebBuilder code. I'd say that the key is you are
writing to an interface with RO SDK, not talking to a database.
Obviously you can return database JSON, but the aim is to put the
business logic in the server, and keep the database internals hidden.


--

Matthew Jones
Image