Hi,

I wanted to share our Drupal site for The 1 Second Film, and get any feedback:
www.the1secondfilm.com

Our project is a non-profit collaborative arts project, currently run on Drupal 4.7. Our site allows folks to become a movie producer by making a small donation. Members receive profiles and can connect with one another, keep blogs, etc. and can also upload content to be in a making of documentary. A goal of our project is to create a community built around collaborative art. Any profits from our finished film will be donated to charity, and the online community will continue to grow with future collaborative projects being planned through our non-profit, The Collaboration Foundation.

The site was built by Jason Salter and designed by a friend and myself. The site has been a big improvement over our earlier site, which was static and became impossible to maintain as our project grew.

Basic site flow:

    1. Users registers and become 'Aspiring-Producers'
    2. Users donate $1 or more and get promoted to a "Producer" user role.
    3. Producers receive profiles they can edit and also get listed in our producer credits (in order of amount donated and then alphabetically)

We are preparing to upgrade to Drupal 5.0 and increase usability and community features as resources allow.

Thanks for taking a look :)

- nirvan

Comments

JohnForsythe’s picture

I've seen some stories about this on Digg, quite an interesting concept. Good to see you're running Drupal.

I like that animated list of famous people in the title, that's a nice touch.

--
John Forsythe
Need reliable Drupal hosting?

the1secondfilm’s picture

thanks :)

yeah, we got hit by digg the first day we launched the drupal site. we thought we were load balanced and ready for potential traffic spikes, but we weren't, and our servers melted.

we made some adjustments since and have been growing steadily.

Jayroll’s picture

nice site. do you mind mentioning what adjustments you had to make to handle the 'digg-effect'?

the1secondfilm’s picture

thanks.

to adjust for the digg effect, i know we ran some tests, tweaked the Apache, and then put some limits on the Cron. but the technicalities of this are WAY over my head.

Jason, our programmer, was able to figure it out with the help of an experienced high traffic Drupal guru (who remains anonymous). I was CC'd on some of the tech details/dialog between the two, and include some info below. hopefully it's helpful...

here is an e-mail reply from our anonymous Drupal Advisor (>) to Jason's e-mail (>>):

> Hey Jason,
>
>> The following modules are present :
>>
>> http_core.c
>> mod_vhost_limit.c
>> mod_env.c
>> mod_php4.c
>> mod_setclass.c
>> mod_log_config.c
>> mod_mime.c
>> mod_negotiation.c
>> mod_status.c
>> mod_include.c
>> mod_autoindex.c
>> mod_dir.c
>> mod_cgi.c
>> mod_asis.c
>> mod_imap.c
>> mod_actions.c
>> mod_userdir.c
>> mod_alias.c
>> mod_rewrite.c
>> mod_access.c
>> mod_auth.c
>> mod_frontpage.c
>> mod_auth_anon.c
>> mod_auth_dbm.c
>> mod_digest.c
>> mod_expires.c
>> mod_headers.c
>> mod_usertrack.c
>> mod_unique_id.c
>> mod_setenvif.c
>
> Yes, there are a few in there you can get rid of but I'm not 100%
> for all of them.
>
> http://httpd.apache.org/docs/1.3/mod/
>
> I *think*
>
> log_config
> include (this is for using SSI)
> cgi
> imap
> actions
> auth_dbm
> digest
>
> I believe you can get rid of those no problem, double check the
> list to see what you think but I'm pretty sure :-)
>
>> I've run the apache benchmarks for -c 20 and -c 100. Both yield a
>> page rate of about 100 / sec.
>>
>> We have two servers in a round robin configuration. When I use the
>> unix top command to watch each server, as I run "ab", only one of
>> them takes the load. Is this the expected behavior?
>
> Yes, I believe so. You are logged into *one* server, not the load
> balancer, so when you type ab, it runs apache for that machine, not
> both. So you can basically double your numbers to figure it out.
>
>>
>> Here is the dump of top to see the average memory size of httpd.
>>
>> 76309 nobody 2 -10 72352K 46524K accept 013 0.00% 0.00% httpd
>> 76315 nobody 2 -10 64900K 38320K accept 013 0.00% 0.00% httpd
>> 569 nobody 2 -10 55020K 28408K accept 007 1.27% 1.27% httpd
>> 76314 nobody 2 -10 54944K 28404K accept 014 0.00% 0.00% httpd
>>
>>
>> Now that we got some numbers. What should we change first?
>
> So your process is roughly 30mb which is what we saw earlier. So
> you can use 100 max clients safely in your httpd.conf.
>
> However, if you remove the above modules, that might drop to 25 or
> 20 mb and you can do even more.
>
> I would remove those modules, recompile, get the new httpd numbers
> and we'll adjust from there, probably around 120 - 150.

Here are the numbers before and after the removal of the three Apache modules. We lost about 1Mb per process.

    Initial values
    PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
    76309 nobody 2 -10 72352K 46524K accept 0 13 0.00% 0.00% httpd
    76315 nobody 2 -10 64900K 38320K accept 0 13 0.00% 0.00% httpd
    569 nobody 2 -10 55020K 28408K accept 0 07 1.27% 1.27% httpd
    76314 nobody 2 -10 54944K 28404K accept 0 14 0.00% 0.00% httpd
    76323 nobody 2 -10 53704K 27164K accept 0 14 0.00% 0.00% httpd
    76321 nobody 2 -10 52968K 26416K accept 0 12 0.00% 0.00% httpd
    94701 nobody 2 -10 52940K 26352K accept 0 09 0.00% 0.00% httpd
    76313 nobody 2 -10 52900K 26312K accept 0 13 0.00% 0.00% httpd
    76310 nobody 2 -10 52868K 26296K accept 0 13 0.00% 0.00% httpd
    76316 nobody 2 -10 52864K 26248K accept 0 14 0.00% 0.00% httpd
    76319 nobody 2 -10 52856K 26260K accept 0 12 0.20% 0.20% httpd
    76322 nobody 2 -10 52832K 26216K accept 0 13 0.24% 0.24% httpd
    76318 nobody 2 -10 52828K 26212K accept 0 13 0.00% 0.00% httpd
    76312 nobody 2 -10 52808K 26296K accept 0 13 0.00% 0.00% httpd
    76317 nobody 2 -10 52788K 26148K sbwait 0 12 0.00% 0.00% httpd
    96179 nobody 2 -10 52784K 26156K accept 0 07 0.00% 0.00% httpd
    76324 nobody 2 -10 52772K 26176K accept 0 14 0.00% 0.00% httpd
    80135 nobody 2 -10 52664K 26032K accept 0 12 0.00% 0.00% httpd
    94700 nobody 2 -10 52656K 26084K accept 0 09 1.03% 1.03% httpd
    80136 nobody 2 -10 52648K 26080K accept 0 15 0.00% 0.00% httpd
    94699 nobody 2 -10 52632K 25996K accept 0 08 0.00% 0.00% httpd
    76320 nobody 2 -10 52620K 26088K accept 0 13 0.15% 0.15% httpd
    76311 nobody 2 -10 52592K 26004K accept 0 13 0.00% 0.00% httpd
    80137 nobody 2 -10 52556K 25932K accept 0 12 0.00% 0.00% httpd

After removal of three Apache modules

    PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
    29497 nobody 2 0 69812K 68056K poll 1:43 0.00% 0.00% clamd
    70477 nobody 2 -10 68104K 42112K accept 0:04 0.00% 0.00% httpd
    70474 nobody 2 -10 53964K 27556K accept 0:03 0.00% 0.00% httpd
    70478 nobody 2 -10 53152K 26560K accept 0:05 0.00% 0.00% httpd
    70489 nobody 2 -10 52992K 26456K accept 0:02 0.00% 0.00% httpd
    70488 nobody 2 -10 52764K 26148K accept 0:03 0.00% 0.00% httpd
    70480 nobody 2 -10 52000K 25468K accept 0:03 0.00% 0.00% httpd
    70482 nobody 2 -10 51256K 24684K accept 0:04 0.00% 0.00% httpd
    70481 nobody 2 -10 51252K 24732K accept 0:03 0.00% 0.00% httpd
    70475 nobody 2 -10 51212K 24708K accept 0:04 0.00% 0.00% httpd
    70479 nobody 2 -10 51164K 24596K accept 0:04 0.00% 0.00% httpd
    73986 nobody 2 -10 51164K 24528K accept 0:01 0.00% 0.00% httpd
    70485 nobody 2 -10 51148K 24440K accept 0:03 0.00% 0.00% httpd
    70487 nobody 2 -10 51120K 24512K accept 0:05 0.00% 0.00% httpd
    70476 nobody 2 -10 51116K 24568K accept 0:03 0.00% 0.00% httpd
    70483 nobody 2 -10 51084K 24520K accept 0:04 0.00% 0.00% httpd
    70486 nobody 2 -10 51048K 24528K accept 0:02 0.00% 0.00% httpd
    70484 nobody 2 -10 50940K 24336K accept 0:03 0.00% 0.00% httpd

The next bit of advice we received was this:

Great so we're right around 27MB now which is just about average. The only other way you're going to shrink that is to get rid of any more modules (but that become quite a bit more tedious) or delete Drupal code :-)

Are there any Drupal modules can you get rid of and/or consolidate?

After that is finalized then just update MaxClients to use this new number of around 100-120 :-)

Then we can start applying patches and optimizing the SQL queries.

Our web hosting is provided by pair.com. Pair was extremely helpful and i can not recommend them enough. After the digg melt, pair configured another server for us, so we had 2 dedicated servers running Round Robin DNS. they then worked closely with jason to get things running better.

Jason asked Pair to recompile Apache on our servers without the following modules:

log_config
include (this is for using SSI)
cgi
imap
actions
auth_dbm
digest

Pair replied:

The following modules we can remove:

digest
imap
auth_dbm
cgi

Please be aware that if we remove the cgi module, you will not be able to
run any CGI. This isn't recommended.

The modules below can not be removed as they are needed for compatibility
with our internal systems.

actions
include
log_config

Please let us know if we should proceed.

We elected to leave the CGI module. And asked pair to change the Apache settings for both of our servers to:

maxclients = 100

Those were the basic steps. I sort of followed it at the time, but it's still a foreign language to me. hopefully it makes sense for those that speak drupal.

droople’s picture

give a list of modules used for the functions of the site

eg: Profiles ......................
Donation....................
Role assignment ..............

that helps