• Stars
    star
    44
  • Rank 634,578 (Top 13 %)
  • Language
    Perl
  • License
    Other
  • Created almost 14 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a superdaemon for hot-deploying server programs

NAME

Server::Starter - a superdaemon for hot-deploying server programs

SYNOPSIS

# from command line
% start_server --port=80 my_httpd

# in my_httpd
use Server::Starter qw(server_ports);

my $listen_sock = IO::Socket::INET->new(
    Proto => 'tcp',
);
$listen_sock->fdopen((values %{server_ports()})[0], 'w')
    or die "failed to bind to listening socket:$!";

while (1) {
    if (my $conn = $listen_sock->accept) {
        ....
    }
}

DESCRIPTION

It is often a pain to write a server program that supports graceful restarts, with no resource leaks. Server::Starter solves the problem by splitting the task into two. One is start_server, a script provided as a part of the module, which works as a superdaemon that binds to zero or more TCP ports or unix sockets, and repeatedly spawns the server program that actually handles the necessary tasks (for example, responding to incoming connections). The spawned server programs under Server::Starter call accept(2) and handle the requests.

To gracefully restart the server program, send SIGHUP to the superdaemon. The superdaemon spawns a new server program, and if (and only if) it starts up successfully, sends SIGTERM to the old server program.

By using Server::Starter it is much easier to write a hot-deployable server. Following are the only requirements a server program to be run under Server::Starter should conform to:

  • receive file descriptors to listen to through an environment variable
  • perform a graceful shutdown when receiving SIGTERM

A Net::Server personality that can be run under Server::Starter exists under the name Net::Server::SS::PreFork.

METHODS

  • server_ports

    Returns zero or more file descriptors on which the server program should call accept(2) in a hashref. Each element of the hashref is: (host:port|port|path_of_unix_socket) => file_descriptor.

  • start_server

    Starts the superdaemon. Used by the start_server script.

AUTHOR

Kazuho Oku

SEE ALSO

Net::Server::SS::PreFork

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

More Repositories

1

picojson

a header-file-only, JSON parser serializer in C++
C++
1,082
star
2

picoev

a tiny, lightning fast event loop for network applications
C
388
star
3

unco

undo any command
C
229
star
4

rat

NAT written in pure ruby
Ruby
172
star
5

jailing

super-easy chroot jail builder/runner for Linux
Perl
165
star
6

kaztools

shellscripts and utilities for myself
Perl
96
star
7

picohash

header-file-only implementation of various hash algorithms
C
89
star
8

Starlet

a Plack Server, formerly known as Plack::Server::Standalone::Prefork::Server::Starter
Perl
69
star
9

C

pseudo-interpreter of the C programming language (using GCC)
C
64
star
10

mysql_json

a MySQL UDF for handling JSON
C++
63
star
11

wpbench

benchmark the load timings of a web page
HTML
61
star
12

picogc

a tiny, portable, precise, mark-and-sweep GC in C++
C
57
star
13

rangecoder

a fast range coder in C++, using SSE
C++
37
star
14

sha1.min.js

SHA-1 implementation in JavaScript (1480 bytes; intended for bookmarklets, etc.)
JavaScript
34
star
15

url_compress

a static PPM-based URL compressor / decompressor
Perl
34
star
16

cppref

man-style access to cppreference.com documents
Perl
32
star
17

mod_reproxy

X-Reproxy-URL header support for Apache/2.x
C
31
star
18

p5-http-parser-xs

a fast http parser
C
30
star
19

zson

binary JSON, compact and with support for streaming
JavaScript
28
star
20

p5-text-microtemplate

Text::MicroTemplate
Perl
24
star
21

mysql-ranking-engine

(to become) a MySQL storage engine specializing in ranking operation
C++
23
star
22

golombset

An implementation of Golomb compressed set in C
C
22
star
23

manymanythreads

A synthetic benchmark of C10K problem using pthreads or epoll
C
21
star
24

cosmic

fail-safe management tools for network-based software RAID, using mdadm + iSCSI
Perl
18
star
25

p5-test-mysqld

mysqld runner for tests
Perl
18
star
26

komake

A wrapper of make with sub-make concurrency limit
Perl
17
star
27

force-dedupe-git-modules

forcibly dedupe git-based NPM modules
JavaScript
16
star
28

p5-Net-DNS-Lite

pure-perl DNS resolver with support for timeout
Perl
16
star
29

p5-Class-Accessor-Lite

Perl
14
star
30

daifuku

transaction logging in JSON, within the MySQL database
Perl
14
star
31

p5-Parallel-Scoreboard

A scoreboard for monitoring status of many processes
Perl
14
star
32

blockdiff

differential backup tool for block devices and files
Perl
13
star
33

p5-test-httpd-apache2

Apache2 starter for testing perl modules
Perl
13
star
34

p5-Cache-LRU

a simple, fast implementation of an LRU cache in pure perl
Perl
12
star
35

p5-string-filter

Regexp-based structured text converter
Perl
12
star
36

kmyacc

http://www005.upp.so-net.ne.jp/kmori/kmyacc/
C
11
star
37

p5-parallel-prefork

Perl
11
star
38

picotemplate

a tiny template engine for embedded HTML
Perl
10
star
39

nopan

install software directly from SVN or Git (instead of from CPAN)
Perl
9
star
40

hq

C++
8
star
41

qhashmap

an open-addressing, linear-probing hash table, derived from v8/src/hashmap.h
C++
8
star
42

picostring

simple rope impl. using std::string
C++
8
star
43

add_with_overflow

an example that links LLVM bitcode and C++ with link-time optimization
C++
8
star
44

App-Restarter

restart command when files change
7
star
45

visiflate

a dumper for Deflate (RFC 1951); useful for visualizing the algorithm
C
7
star
46

git-pushdir

pushes the files in current directory to Git repository
Perl
7
star
47

h2-cache-digest

code snippets for h2-cache-digest
C
6
star
48

puby

6
star
49

draft-kazuho-httpbis-priority

Makefile
6
star
50

p5-test-postgresql

postgresql runner for tests
Perl
5
star
51

CGI-Application-Emulate-PSGI

a legacy-code-friendly PSGI adapter for CGI::Application
Perl
5
star
52

mprofile

http://developer.cybozu.co.jp/archives/kazuho/2009/07/mysql-539d.html
Perl
5
star
53

fakeiops

an LD_PRELOAD library for simulating storage systems with various IOPS
C
5
star
54

draft-kazuho-quic-quic-on-streams

Makefile
5
star
55

quic-perf-metrics

Makefile
5
star
56

ieee754.js

Pure-javascript decoder for IEEE 754 floating point numbers
JavaScript
4
star
57

japanize.firefox

Firefox plugin for Japanize
JavaScript
4
star
58

incline

replicator for RDB shards
C++
4
star
59

friendsd

server of the `friends` program, used at komaba.ecc.u-tokyo.ac.jp from 1996 to 1999
4
star
60

benchart

Minimalistic benchmark logger and visualizer
Perl
3
star
61

p5-Sub-Throttle

Perl
3
star
62

SQL-QueryMaker

helper functions for SQL query generation
Perl
3
star
63

Plack-Middleware-AddDefaultCharset

port of Apache2's AddDefaultCharset
Perl
3
star
64

bindlocal

an LD_PRELOAD library that forces servers to listen on 127.0.0.1 instead of 0.0.0.0
C
3
star
65

esDateParser

a date parser compliant to ECMA 262, derived from V8
C++
3
star
66

p5-Sub-Timekeeper

calls a function with a stopwatch
Perl
3
star
67

Test-Mocha-PhantomJS

JavaScript
3
star
68

examples

code snippets
C
3
star
69

kazuho.github.com

HTML
2
star
70

draft-kazuho-quic-authenticated-handshake

Authenticated Handshake for QUIC (using ESNI)
Makefile
2
star
71

p5-DBIx-Printf

A printf-style prepared statement
Perl
2
star
72

aobench.jsx

original: http://kioku.sys-k.net/aobench_jsx/
JavaScript
2
star
73

draft-kazuho-quic-address-bound-token

Makefile
2
star
74

gh-fetch-submodules

fetch the missing submodule contents within a GitHub release tarball
Perl
2
star
75

kazutils.c

tiny set of C functions
1
star
76

myfirst-usdt

learning userspace DTrace
Makefile
1
star
77

early-hints

now part of https://github.com/httpwg/http-extensions
Makefile
1
star
78

net.examp1e.picoorm

Java
1
star
79

picoshparser

(experimental) parser of Structured Headers
C
1
star
80

force-dedupe-git-modules.m2

test repo for https://github.com/kazuho/force-dedupe-git-modules
JavaScript
1
star
81

draft-kazuho-httpbis-selftrace

Makefile
1
star
82

force-dedupe-git-modules.m1

test repo for https://github.com/kazuho/force-dedupe-git-modules
JavaScript
1
star
83

protected-sni

Makefile
1
star
84

http-cache-fingerprint

cache fingerprint header for HTTP
Makefile
1
star