Skip to content

Improve ASP.NET performance by up to 13% #314

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jun 7, 2013
Merged
5 changes: 5 additions & 0 deletions aspnet/src/Web.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql, Version=2.0.12.0"/>
</providers>
</entityFramework>
<appSettings>
<!-- Disable support for directly accessing *.cshtml/*.vbhtml files because that is a perf killer
and because we don't use such functionality. -->
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<!-- Show errors -->
<customErrors mode="Off"/>
Expand Down
4 changes: 2 additions & 2 deletions benchmarker.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ def __setup_server(self):
try:
if os.name == 'nt':
return True
subprocess.check_call("sudo sysctl -w net.core.somaxconn=1024".rsplit(" "))
subprocess.check_call("sudo sysctl -w net.core.somaxconn=5000".rsplit(" "))
subprocess.check_call("sudo -s ulimit -n 8192".rsplit(" "))
subprocess.check_call("sudo sysctl net.ipv4.tcp_tw_reuse=1".rsplit(" "))
subprocess.check_call("sudo sysctl net.ipv4.tcp_tw_recycle=1".rsplit(" "))
Expand All @@ -265,7 +265,7 @@ def __setup_server(self):
def __setup_client(self):
p = subprocess.Popen(self.ssh_string, stdin=subprocess.PIPE, shell=True)
p.communicate("""
sudo sysctl -w net.core.somaxconn=1024
sudo sysctl -w net.core.somaxconn=5000
sudo -s ulimit -n 8192
sudo sysctl net.ipv4.tcp_tw_reuse=1
sudo sysctl net.ipv4.tcp_tw_recycle=1
Expand Down
19 changes: 15 additions & 4 deletions installer.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import subprocess
import os
import time

class Installer:

Expand Down Expand Up @@ -31,7 +32,7 @@ def __install_server_software(self):
self.__run_command("sudo apt-get install gcc-4.8 g++-4.8", True)

self.__run_command("cp ../config/benchmark_profile ../../.bash_profile")
self.__run_command("sudo sh -c \"echo '* soft nofile 8192' >> /etc/security/limits.conf\"")
self.__run_command("sudo sh -c \"echo '* - nofile 8192' >> /etc/security/limits.conf\"")

#######################################
# Languages
Expand Down Expand Up @@ -110,7 +111,17 @@ def __install_server_software(self):
# Perl
#

self.__run_command("curl http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-x86_64-linux-glibc-2.3.5-296746.tar.gz | tar xvz");
# Sometimes this HTTP server returns 404, so retry a few times until it works, but don't retry forever
tries = 0
while True:
self.__run_command("curl http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-x86_64-linux-glibc-2.3.5-296746.tar.gz | tar xvz");
if os.path.exists(os.path.join('installs', 'ActivePerl-5.16.3.1603-x86_64-linux-glibc-2.3.5-296746')):
break
tries += 1
if tries >= 30:
raise Exception('Could not download ActivePerl after many retries')
time.sleep(5)

self.__run_command("sudo ./install.sh --license-accepted --prefix /opt/ActivePerl-5.16 --no-install-html", cwd="ActivePerl-5.16.3.1603-x86_64-linux-glibc-2.3.5-296746", send_yes=True)
self.__run_command("curl -L http://cpanmin.us | perl - --sudo App::cpanminus")
self.__run_command("cpanm -f -S DBI DBD::mysql Kelp Dancer Mojolicious Kelp::Module::JSON::XS Dancer::Plugin::Database Starman Plack JSON Web::Simple DBD::Pg JSON::XS EV HTTP::Parser::XS Monoceros")
Expand Down Expand Up @@ -278,7 +289,7 @@ def __install_server_software(self):
##############################
# Vert.x
##############################
self.__run_command("curl http://vertx.io/downloads/vert.x-1.3.1.final.tar.gz | tar xvz")
self.__run_command("curl http://vert-x.github.io/vertx-downloads/downloads/vert.x-1.3.1.final.tar.gz | tar xvz")

##############################
# Yesod
Expand Down Expand Up @@ -322,7 +333,7 @@ def __install_client_software(self):
##############################
yes | sudo apt-get update
yes | sudo apt-get install build-essential git libev-dev libpq-dev libreadline6-dev postgresql
sudo sh -c "echo '* soft nofile 8192' >> /etc/security/limits.conf"
sudo sh -c "echo '* - nofile 8192' >> /etc/security/limits.conf"

sudo mkdir -p /ssd
sudo mkdir -p /ssd/log
Expand Down