Hi all,
Regarding the comments I received, we decided to use following configuration for server. [snip]
Somebody any recommendations?
Yes. Although you don't say what kind of environment this is -- sales/journaling system? Intranet? Mail? Document management? Or what kind of load. "About 500-600 will ask less intensive requests" -- yes, but when? Distributed over a day? Concurrently? What about your data? Lots of rows, lots of data, or both? And so forth. Based on the information you do give out: Python is a real CPU sponge, and for this kind of load I'd definitely bump the horsepower up to a dual Pentium III Xeon 500MHz, 512KB L2 cache. Around $1100 per CPU. That said, however, I don't know how well Linux scales to two CPUs; for web serving, recent benchmarks have pointed out that it doesn't scale well at all. Fast disks. Ultra SCSI at a minimum, preferably Wide and/or Ultra2 SCSI, preferably striped volumes. Zope may not be the real disk hog, but database servers are. I bet PostgreSQL isn't an exception; I know Sybase is. RAM is crucial, but you'll probably survive on 256MB, although with your kind of environment I'd personally opt for 512MB at a minimum. Multiple-port or multiple network cards. Multiport NICs support port failover and typically come with load balancing. Coupled with one or more switches, these are real killers when it comes to bandwidth and responsiveness.
Kind Regards, Tom.
-- Alexander Staubo http://www.mop.no/~alex/ "QED?" said Russell. "It's Latin," said Morgan. "It means, 'So there you bastard'." --Robert Rankin, _Nostramadus Ate My Hamster_
On Wed, 18 Aug 1999, Alexander Staubo wrote:
Hi all,
Regarding the comments I received, we decided to use following configuration for server. [snip]
Somebody any recommendations?
Yes.
Although you don't say what kind of environment this is -- sales/journaling system? Intranet? Mail? Document management? Or what kind of load. "About 500-600 will ask less intensive requests" -- yes, but when? Distributed over a day? Concurrently? What about your data? Lots of rows, lots of data, or both? And so forth.
Based on the information you do give out:
Python is a real CPU sponge, and for this kind of load I'd definitely bump the horsepower up to a dual Pentium III Xeon 500MHz, 512KB L2 cache. Around $1100 per CPU. That said, however, I don't know how well Linux scales to two CPUs; for web serving, recent benchmarks have pointed out that it doesn't scale well at all. IMHO, I'd try to scale it clusterwise: So if you decide you are short on CPU cycles, just put the PostgreSQL server on a seperate 100mbit connected server.
Fast disks. Ultra SCSI at a minimum, preferably Wide and/or Ultra2 SCSI, preferably striped volumes. Zope may not be the real disk hog, but database servers are. I bet PostgreSQL isn't an exception; I know Sybase is. Well, my experience, with a much smaller setup is, that IDE is fine as long there aren't many par. accesses. So as long a single threaded ZOPE is enough IDE is ok. With more than one access at a time, SCSI is a must.
(My experience was with a custom Python/Tkinter application working with a PostgreSQL server, with 5 concurrent users, where I replaced an old SCSI disc with a much faster and newer IDE disc. Well, the results had been, that I needed to replace within a week with SCSI discs ;) )
RAM is crucial, but you'll probably survive on 256MB, although with your kind of environment I'd personally opt for 512MB at a minimum. Well, yes and no. ZOPE does have an rather big (all is relative, I compare it against a standard Apache site, which doesn't use any countable memory at all) initial usage, but it rather stays on this level.
Multiple-port or multiple network cards. Multiport NICs support port failover and typically come with load balancing. Coupled with one or more switches, these are real killers when it comes to bandwidth and responsiveness. With the data he posted, I doubt that he will saturate even one 100mbit segment (150 intensive queries in 5 minutes if I remember right. That's one query every 2 seconds. So well, as long the query results are much smaller than 20MB, it should be ok.)
But again, I'd rather consider going with a small server, and upgrading it when needed. It's usually easier to get funds for upgrading a running system than to come with a dual-PIIIX setup before the management did see something of the solution. Andreas -- Andreas Kostyrka | andreas@mtg.co.at phone: +43/1/7070750 | phone: +43/676/4091256 MTG Handelsges.m.b.H. | fax: +43/1/7065299 Raiffeisenstr. 16/9 | 2320 Zwoelfaxing AUSTRIA
On Wed, 18 Aug 1999, Alexander Staubo wrote:
Hi all,
Regarding the comments I received, we decided to use following configuration for server. [snip]
Somebody any recommendations?
Python is a real CPU sponge, and for this kind of load I'd definitely bump the horsepower up to a dual Pentium III Xeon 500MHz, 512KB L2 cache. Around $1100 per CPU. That said, however, I don't know how well Linux scales to two CPUs; for web serving, recent benchmarks have pointed out that it doesn't scale well at all.
Linux scales very well to two CPUs in the Zope scenario (the Mindcraft benchmark was with 4 CPUs and 4 NICs running Apache). And kernel 2.4 (which will be out in late fall) will scale *extremely* well (most of the work done was to improve scalability). -Petru
Alexander Staubo wrote:
Although you don't say what kind of environment this is -- sales/journaling system? Intranet? Mail? Document management? Or what kind of load. "About 500-600 will ask less intensive requests" -- yes, but when? Distributed over a day? Concurrently? What about your data? Lots of rows, lots of data, or both? And so forth.
I agree that this is unclear. Basically it's impossible to work out what is needed, I think.
Based on the information you do give out:
Python is a real CPU sponge, and for this kind of load I'd definitely bump the horsepower up to a dual Pentium III Xeon 500MHz, 512KB L2 cache. Around $1100 per CPU. That said, however, I don't know how well Linux scales to two CPUs; for web serving, recent benchmarks have pointed out that it doesn't scale well at all.
Cough, cough. Are you referring to the Mindcraft benchmarks? They didn't cover *dynamic* websites at all, I think, and definitely they didn't benchmark Zope. Also for static pages, Linux scales well enough to drown most network connections anyway. Anyway, I don't know how Zope would scale on two CPUs, which would be the real issue, I think. Does threaded Python scale to two CPUs at all? How do you figure out anything at all based on the information he gives out? Unless there's a very heavy database load, which could go on one CPU. I imagine that's another possibility.
Fast disks. Ultra SCSI at a minimum, preferably Wide and/or Ultra2 SCSI, preferably striped volumes. Zope may not be the real disk hog, but database servers are. I bet PostgreSQL isn't an exception; I know Sybase is.
RAM is crucial, but you'll probably survive on 256MB, although with your kind of environment I'd personally opt for 512MB at a minimum.
I don't still don't know what kind of environment, so this is hard to guess. :) Perhaps an old pentium with 64 megs of RAM will do fine already; don't underestimate old pentiums. If a 386 can play departmental fileserver already... It's impossible to say from this. But indeed RAM is the biggest bottleneck of these all.
Multiple-port or multiple network cards. Multiport NICs support port failover and typically come with load balancing. Coupled with one or more switches, these are real killers when it comes to bandwidth and responsiveness.
This sounds like way overkill. I'm no hardware guy, but to support this you'd need a couple of fulltime engineers and some OS extensions, I'd think. :) Perhaps the best option is to try it out on a reasonable system first. If it gets too slow later (usage first has to pick up a lot, too, internally, this takes time), you can always upgrade the RAM, or switch to a more powerful system. Prices of these systems will have come down too in the mean time. All in all you might end up spending less money going this route than buying a possibly overpowered system now. Regards, Martijn
On Wednesday, August 18, Martijn Faassen wrote:
Based on the information you do give out:
Python is a real CPU sponge, and for this kind of load I'd definitely bump the horsepower up to a dual Pentium III Xeon 500MHz, 512KB L2 cache. Around $1100 per CPU. That said, however, I don't know how well Linux scales to two CPUs; for web serving, recent benchmarks have pointed out that it doesn't scale well at all.
Cough, cough. Are you referring to the Mindcraft benchmarks? They didn't cover *dynamic* websites at all, I think, and definitely they didn't benchmark Zope. Also for static pages, Linux scales well enough to drown most network connections anyway.
Anyway, I don't know how Zope would scale on two CPUs, which would be the real issue, I think. Does threaded Python scale to two CPUs at all? How do you figure out anything at all based on the information he gives out? Unless there's a very heavy database load, which could go on one CPU. I imagine that's another possibility.
Very interesting questions. It would be great to know if anyone has some data on how python and Zope react under different load/operation conditions. I haven't seen anyone dispute the claim that "python is a real CPU sponge", and it looks like no one is really sure how scalable Zope is either.
From these posts, it sounds as if Zope may not be cut out for use in larger sites at all, unless you have some serious hardware backing it up.
Does anyone have some reasonable Zope load benchmarks? I know benchmarks are always questionable (just look at the Mindcraft debate that has sprung up here), but at least it's a start. Does Digital Creations have any hard data? The only statistic I've seen so far is that Zope can support up to 2 million hits/day - and who knows what this really means. I've also seen some hints on the list about ZEO, complete with load balancing over multiple machines and other enterprise goodies, does anyone know more about this or should I just wait for the announcement? I suppose I can wait... Jason
participants (5)
-
Alexander Staubo -
Andreas Kostyrka -
Jason Jones -
Martijn Faassen -
Petru Paler