Hi Pete, If you suspect queries are your pain point then I would do the following to get a sense of what you app is doing under the hood.
Get a copy of http://hackmysql.com/mysqlreport and use it against your db. It can assist in tweaking innodb or myisam table configs. Turn on slow query logging, add the lines log_slow_queries=/usr/local/mysql/data/mysql-slow.log (adjust path as necessary) log-queries-not-using-indexes To your /etc/my.cnf and restart the db. This will log any query that takes longer than 1 second to run (will only spot the really heinous ones, in a busy web app a 1 second query is game over). This also logs queries which do not use and index, hence scale badly as your tables grow. Recent versions of linux have an excellent vmstat and iostat, have them running in a wind during busy times of the day and see how your db machine handles it. Is it really out of CPU, or does your dataset not fit in memory and you pulling huge blobs of data off the disk because of poorly specified queries, or worse spending it rashly by creating many temporary tables. I have found that time spent optimising db queries, and rethinking the datamodel to be more sql efficient pays off in the long run vs throwing hardware at the problem. Cheers Dave On 03/11/2007, at 5:38 AM, Pete DeLaurentis wrote: > Yeah, all the foreign keys are indexed. I'm also caching what I can > in our ruby app's memory. > > It seems to be the database writes that are taking up a lot of the > time. The other offender are some multiple JOINs we're doing. > > I've ordered more processors for the database server, and am clearing > off a second machine so I can get a little MySQL cluster going. Any > advice on this is welcome since I've never scaled a database server > before. > > As the database gets faster, it will help reduce the timeouts. But > demand + server load has a way of sneaking up on you. I'm looking > for a way of making sure our server is less likely to timeout on > users when we run into system bottlenecks (now + in the future). > > Thanks, > Pete > > > On Nov 2, 2007, at 11:29 AM, barsalou wrote: > >> Pete, >> >> What about the DB is the bottleneck? I'm assuming you have already >> looked at indexing and the like. >> >> Mike B. >> >> Quoting Pete DeLaurentis <[EMAIL PROTECTED]>: >> >>> Hi guys, >>> >>> Does anyone know if mongrel has a built-in timeout for requests that >>> take too long? If so, how do you increase it? >>> >>> I've found that some server requests are timing out. Complicated >>> requests are already being farmed out to asynchronous processes. >>> But >>> some of the more basic requests are timing out when we have our peak >>> server load in the mornings (the bottleneck is the database server). >>> >>> There are a couple possible locations for the timeout I'm seeing: >>> >>> 1. Mongrel >>> 2. Lighttpd >>> 3. Client browser / application >>> >>> On my local development server, it does not timeout, leading me to >>> believe it's not #3. >>> >>> Any feedback is appreciated. >>> >>> Thanks, >>> Pete >>> _______________________________________________ >>> Mongrel-users mailing list >>> Mongrel-users@rubyforge.org >>> http://rubyforge.org/mailman/listinfo/mongrel-users >>> >> >> >> >> ---------------------------------------------------------------- >> This message was sent using IMP, the Internet Messaging Program. > > _______________________________________________ > Mongrel-users mailing list > Mongrel-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-users _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users