From: Mario Valente [mailto:mvalente@ruido-visual.pt] Sent: Wednesday, January 29, 2003 10:38 PM To: Wankyu Choi; zope@zope.org Subject: Re: [Zope] Hardware for Zope + ZEO First of all, thanks for your detailed and informative feedback. I could hardly find any feedback regarding this issue for months.
We had a similar setup (IIS + ASP + MSSQL) that was crashing at least once a day. Once converted to Linux+Zope+MySQL it ran happily on the same hardware (we actually took out dual processor frontends and put in single processor frontends and there was no problem) and had uptimes of 70 days.
My servers have been up and running for a year and a half :-) I'm pretty much satisfied with the existing APM setup. The only reasonly I'm switching to Zope/Python is ... for better application productivity. What I could do in an APM setup, I could do it in 1/10 time and efforts. With these ZODB storage worries gone, I have no complaint about Zope/Python ;-)
I plan to buy one No.1 machine plus one No.2 machine since I already have two machines, candidates for the other two ZEO clients.
OK, although I think that since those machines are multiprocessors they might be put to better use.
The problem is the existing machines should still be serving users while I toy around with the new machines. That is, I plan to slap together a beta testing environment with the new machines installing everything from scratch while the existing ones keep running. I'll need at least two months to finish the setup and necessary Zope/CMF/Plone applicatioins like NeoBoard and NeoPortal Content Pak and more.
I came under the impression using Zope for the past year ( and from python/zope docs ) that python uses only one CPU no matter how many I have. One of the two machines I already have has four Xeon cpus but Zope on that machine runs way slower than one on my single P3 desktop with a bit more horsepower.
I would use this machine as a backend server (with an upgrade to the disks and RAM perhaps), saving the expense of buying machine nr 1.
Like I mentioned above, it should keep running while I set up the other machines. When the two new machines are properly setup and my application development projects are complete, I'll go public with these machines and take down the existing ones; clear up the mess in the old machines ( running too long with old OS stuff ) reinstalling everything from scratch as I will have done with the new machines; put them back in service. The number 4 machine with 4 CPUs will also be put to use as a mail server as it is now for example. So I won't be wasting their horsepower. I run serveral mailinglists with an average 100,000 subscribers, for one thing ;-) This might look like a stupid plan... but whenever I did a major overhaul, something went wrong. About this time of the year...2002... I even tried an automatic setup process of my own creation with a tons of shell scripts and tested them on my Linux box again and again before actually running them on the production machines: an hour of a job, I thought. But it took a day and a half ( no service was available; users were screaming down my neck ) Never did I dream that RedHat wouldn't install on an intel 440 machine with a particular adaptec scsi controller; it just hung. Hours of searching the Redhat Bugzilla turned up an entry only days old regarding this issue. I even passed out after that day and a half of nightmare :( With two months of leeway and lastest models of servers, I won't have to worry about such nonsensical, unexpected glitches ;-)
Would this setup seem reasonable? Or better still, how would you set your portal up if you got extra dough for hardware?
If you intend to spend some extra money, spend it on a front end load balancer caching system. You would put this in front of your ZEO client machines, spreading the load and caching most of the pages.
Can't I just use linux virtual server? Seems like a lot of waste to buy an expensive load balancer for so few a machines... Zope will be running behind Apache + Squid fronts. Bad ideas? Just a thought, haven't tried it.
2. Some say P3 tualatin is better for Python than P4 or even Xeon processors. Is that true?
I'm not aware of this. But even if true, your machines wont be running Python only. They'll be running the OS, system tasks, etc.
I meant a ZEO client machine. I don't plan to hog its CPU with any other serious tasks. The other two exsting machines already have multiple CPUs and they'll double as a mail server and stuff.
I definitely woulnd use FileStorage. Mainly because when Data.fs grows big, Zope startup times go to hell. We're using BerkeleyDB Storage with great success. You can either run it versionless or not. And its quite fast. We've been looking at DirectoryStorage but right now its still not final and we're afraid that at some point (ie large sites with lots of objects) the OS might run out of file handles.
Thanks for bringing the BDB Storage to my attention. ( ReiserFS has no file handle/inode problems, though. )
Also keep in mind that dual processor systems help in eliminating single points of failure. You woulnt want to have a nice setup with a single processor backend server and have that processor fail :-)
Hm... that's a good point. I haven't thought of that :-) Taking out a CPU from the total cost of buying a server doesn't even make a dent anyway :(.
Machine No.4 - 4 Xeon CPUs (older model) + 2G mem + 4 36G disks (disks old, will be recycled for backup storage or something)
Use this as your backend server (MySQL + ZEO). Use BerkeleyDB or DirectoryStorage. You should only store in Zope what is "Zope stuff" (DTML methods, Python methods, ZClasses, ZSQL queries, etc). All the original site data should be kept in MySQL. All images should be stored as External Files (as well as any other BLOBs like PDF files, DOC files, etc).
which means... you wouldn't put any serious heavy-weight data into your ZODB storage no matter how good it might be? That's the problem I'm not exactly sure about. For example, I have tons of textual data stored in MySQL via PHP NeoBoard ( a web-based discussion board ). I rewrote NeoBoard from scratch as a Zope product. It stores all its data in ZODB. I was thinking of pulling all the existing articles into ZODB to use Zope NeoBoard. Now the plan looks like a silly idea... I seem to have to do just the opposite: take out all data stored in ZODB and put it into MySQL. That way, Zope NeoBoard Article objects will only act as wrappers pulling acutal data from MySQL tables. Plus, I rewrote all the CMF content types to add extra features and stuff. Now I'll need to do the same with these content types to make use of MySQL. Is my assumption right? That makes ZODB look like a metadata holder, not a database :(
Hope this helps.
It surely helped. Thanks a lot. Cheers, Wankyu Choi --------------------------------------------------------------- To the dedicated staff at NeoQuest, language is not a problem to be dealt with, but an art waiting to be performed. --------------------------------------------------------------- Wankyou Choi CEO/President NeoQuest Communications, Inc. 3rd Floor, HMC Bldg., 730-14, Yoksam-dong, Kangnam-gu Seoul, Korea Tel: 82-2 - 501 - 7124 Fax: 82-2-501-7058 Corporate Home: http://www.neoqst.com Personal Home: http://www.zoper.net, http://www.neoboard.net e-mail: wankyu@neoqst.com ---------------------------------------------------------------