mtcp-stack / mtcp

mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems
Other
1.98k stars 436 forks source link

lighttpd: "Something weird took place!" #236

Open DBLouis opened 5 years ago

DBLouis commented 5 years ago

The following error message appears when running lighttpd:

...
CPU 0: initialization finished.
[mtcp_create_context:1284] CPU 0 is now the master thread.
[    listen: 268] Something weird took place!
...

The server does not answer when running telnet x.x.x.x 80. The host system is Ubuntu 16.04 (Linux 4.15) with Intel i210 NIC.

Here are the exact steps that I executed:

git clone https://github.com/mtcp-stack/mtcp.git
cd mtcp
git checkout 0c3882107a6325d5d0479247ab1344f4eb6fcbf2 # version 2.1
git submodule update --init

export MTCP_ROOT="$(pwd)/mtcp"
export RTE_SDK="$(pwd)/dpdk"
export RTE_TARGET=x86_64-native-linuxapp-gcc

sed -i -e 's/O_TO_EXE_STR =/\$(shell if [ \! -d \${RTE_SDK}\/\${RTE_TARGET}\/lib ]\; then mkdir \${RTE_SDK}\/\${RTE_TARGET}\/lib\; fi)\nLINKER_FLAGS = \$(call linkerprefix,\$(LDLIBS))\n\$(shell echo \${LINKER_FLAGS}
\> \${RTE_SDK}\/\${RTE_TARGET}\/lib\/ldflags\.txt)\nO_TO_EXE_STR =/g' "${RTE_SDK}/mk/rte.app.mk"

autoreconf -ivf
make -j4 -C dpdk install T="${RTE_TARGET}"
./configure --with-dpdk-lib="${RTE_SDK}/${RTE_TARGET}" CFLAGS="-DMAX_CPUS=4"
make -j4

./setup_mtcp_dpdk_env.sh
# - load UIO module
# - setup hugepages
# - register ethernet port
# - quit

ip addr add dev dpdk0 x.x.x.x/24
ip link set dev dpdk0 up

cd apps/lighttpd-1.4.32/
./configure --without-bzip2 CFLAGS="-g -O2 -DINFO -DDBGERR" --with-libmtcp="${MTCP_ROOT}" --with-libdpdk="${RTE_SDK}/${RTE_TARGET}" --enable-netmap
make -j4
make install

mkdir /etc/lighttpd
cp src/mtcp.conf /etc/lighttpd/
cp -r doc/config/* /etc/lighttpd/
cd /etc/lighttpd/
# edit mtcp.conf and m-lighttpd.conf
lighttpd -D -n1 -f m-lighttpd.conf
io = dpdk
num_cores = 1
num_mem_ch = 4
port = dpdk0
max_concurrency = 8192
max_num_buffers = 8192
rcvbuf = 8192
sndbuf = 8192
tcp_timeout = 30
tcp_timewait = 0
stat_print = dpdk0
var.log_root    = "/tmp/lighttpd"
var.server_root = "/srv/www"
var.state_dir   = "/var/run"
var.home_dir    = "/var/lib/lighttpd"
var.conf_dir    = "/etc/lighttpd"
var.vhosts_dir  = server_root + "/vhosts"
var.cache_dir   = "/var/cache/lighttpd"
var.socket_dir  = home_dir + "/sockets"

include "modules.conf"

server.port = 80
server.use-ipv6 = "enable"
server.bind = "x.x.x.x"
server.document-root = server_root + "/htdocs"

server.pid-file = state_dir + "/lighttpd.pid"

server.errorlog             = log_root + "/error.log"

include "conf.d/debug.conf"

server.event-handler = "mtcp-epoll"
server.network-backend = "mtcp_writev"
server.stat-cache-engine = "simple"
server.max-connections = 1024
server.listen-backlog = 4096
server.infinite-keep-alive-requests = "enable"
server.max-read-idle = 3600
server.max-write-idle = 3600

index-file.names += (
  "index.xhtml", "index.html", "index.htm", "default.htm", "index.php"
)

url.access-deny = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi" )

include "conf.d/mime.conf"

include "conf.d/dirlisting.conf"

server.follow-symlink = "enable"

server.upload-dirs = ( "/var/tmp" )
ajamshed commented 5 years ago

@DBLouis ,

Apologies for the delayed response. Please refer to my response in #237. lighttpd is working fine with ixgbe/i40e compatible NIC devices.