Browse Source

Merge pull request #1 from pfig/feature/dancer

Dancer (Perl) app
Pedro Figueiredo 12 years ago
parent
commit
4001722cb2
3 changed files with 89 additions and 0 deletions
  1. 24 0
      dancer/README.md
  2. 28 0
      dancer/app.pl
  3. 37 0
      dancer/nginx.conf

+ 24 - 0
dancer/README.md

@@ -0,0 +1,24 @@
+# Setup
+
+* Perl 5.16.3
+* MySQL 5.5
+* Wrk 2.0
+
+# Requirements
+
+* Dancer
+* Dancer::Plugin::Database
+* DBD::mysql
+* Starman (if using Starman as web server)
+* Plack (for plackup)
+* nginx (if you want to front Dancer with nginx, nginx.conf provided)
+
+# Deployment
+
+Something along the lines of
+
+    plackup -E production -s Starman --workers=2 -l /tmp/frameworks-benchmark.sock -a ./app.pl
+
+if you want to front it with nginx, otherwise
+
+    plackup -E production -s Starman --port=8080 --workers=2 -a ./app.pl

+ 28 - 0
dancer/app.pl

@@ -0,0 +1,28 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use Dancer ':syntax';
+use Dancer::Plugin::Database;
+set serializer => 'JSON';
+
+#my $dbh = database({ driver => 'mysql', database => 'test' });
+my $dbh = database({ driver => 'mysql', host => 'ip-10-34-150-134.eu-west-1.compute.internal', database => 'test', username => 'root' });
+
+get '/json' => sub {
+    { message => 'Hello, World!' }
+};
+
+get '/db' => sub {
+    my $queries = params->{queries} || 1;
+    my @response;
+    for( 1 .. $queries ) {
+        my $id = int rand 10000 + 1;
+        if ( my $row = $dbh->quick_select( 'world', { id => $id } ) ) {
+            push @response, { id => $id, randomNumber => $row->{randomnumber} };
+        }
+    }
+    { \@response }
+};
+
+Dancer->dance;

+ 37 - 0
dancer/nginx.conf

@@ -0,0 +1,37 @@
+user www;
+
+worker_processes 2;
+
+events {
+  worker_connections  1024;
+}
+
+http {
+  output_buffers   1 32k;
+  postpone_output  1460;
+
+  sendfile         on;
+  tcp_nopush       on;
+
+  tcp_nodelay      on;
+
+  upstream backendurl {
+    server unix:/tmp/frameworks-benchmark.sock;
+  }
+
+  server {
+    listen 8888;
+    server_name localhost;
+
+    location / {
+      try_files $uri @proxy;
+      access_log off;
+      expires max;
+    }
+
+    location @proxy {
+      proxy_set_header Host $http_host;
+      proxy_pass http://backendurl;
+    }
+  }
+}