Commit Graph

68 Commits (173e66311e0c2d4e64661f29e064a9626f971e2e)

Author SHA1 Message Date
chenwei 3b18e987d1 Nginx: fixbug, support "master_process off". 2018-11-06 12:51:46 +08:00
chenwei bbae7c2f78 Nginx: fixbug, stack-buffer-overflow, refer to #286. 2018-11-06 12:06:29 +08:00
10077240 37324d912f FreeBSD define IP_BINDANY in freebsd/netinet/in.h
Fstack should only support IP_BINDANY.
2018-10-23 15:18:03 +08:00
fengbojiang 1c1eafbf32 fix a typo 2018-08-16 16:25:57 +08:00
10077240 b43e0dde49 replace __linux__ with HAVE_FF_KQUEUE
Only f-stack redis server need bind cpu,  and forked process will inherit it.
2018-08-09 07:16:44 +08:00
10077240 9518765b1f reset cpu affinity when new process forked.
New forked process should not compete same core with redis server.
2018-08-08 07:40:39 +08:00
fengbojiang efb6796dac Fix #251:Compiling errors on Ubuntu.
On Ubuntu 16.04/18.04, fixed compile error with -Wunused-result
and -Wimplicit-fallthrough.
2018-07-23 18:22:09 +08:00
fengbojiang(姜凤波) 5c6bf25f18 Fixed redis' compile error of 'struct timespec' when use gcc7.3.0 on ubuntu 18.04. 2018-07-10 16:08:05 +08:00
whl739 524e801cfb Nginx: hijack `shutdown`.
Fix typo in previous commit.
2018-06-21 17:25:56 +08:00
whl739 a29bb116db Nginx: hijack `shutdown`.
In some cases, nginx will call `ngx_shutdown_socket`, so we need to hijack `shutdown`.
2018-06-21 17:22:59 +08:00
chenwei 4e4a28b584 Nginx: fixbug, hijack `getpeername` and `getsockname`. 2018-05-27 12:29:26 +08:00
logwang 2bfe3f2e55 DPDK: upgrade to 17.11.2 LTS.
Changes:
1. This version is downloaded from
https://fast.dpdk.org/rel/dpdk-17.11.2.tar.xz.
2. Adapt the new interface `rte_ring_dequeue_burst`.
3. Change the type of `port_id` from uint8_t to uint16_t.
4. Just link libdpdk.a instead of the other libaries.
5. Install libnuma-dev first.
6. Update the documents.
2018-05-15 17:49:22 +08:00
chenwei 0eb653e5ef Nginx: fixbug, support `NGX_PROCESS_HELPER` .e.g cache, refer to #142 2018-05-04 17:02:02 +08:00
chenwei bc0822cf2e Nginx: fixbug, hijack `__recv_chk`.
Nginx maybe call `__recv_chk` with https because of _FORTIFY_SOURCE.
Refer to #179.
See _FORTIFY_SOURCE (since glibc 2.3.4)
2018-04-16 18:52:58 +08:00
chenwei bcb122a7a7 Nginx: bugfix, shouldnot pollute `socket type` 2018-04-10 17:28:10 +08:00
chenwei 9012784489 Nginx: some logs are no longer needed on nginx-fstack. 2018-04-09 15:42:21 +08:00
陈威 b62e74d7c3 Nginx : a more friendly hint
If the f-stack primary process hasn't been initialized successful, the nginx master gives a more friendly hint.
2018-03-22 15:41:17 +08:00
chenwei 917b95625c Nginx: bugfix, secondary worker should be spawned after primary worker completing initialization of fstack(dpdk)
When starting nginx with mutil-processes, secondary worker may be spawned before primary worker completing initialization of fstack(dpdk), so errors occurred, for one, in kni.
2018-03-12 17:13:02 +08:00
logwang bb6ad8038f Set the default configuration `kern.ncallout`(number of entries in
callwheel and size of timeout() preallocation).
2018-03-01 16:07:35 +08:00
chenwei 8eec41ee4c Nginx : bugfix, changing `listening socket type` in cycle may lead to errors.
Uses a temporaty variable to hold of potentially changing socket type but
does not modify `listening socket type` in cycle.
2018-03-01 15:39:33 +08:00
chenwei 99c10b6c22 Nginx: revise indent. 2018-02-24 17:08:59 +08:00
chenwei 7f2b0d8fb1 Nginx : add a creation flag SOCK_FSTACK(create-fstack-socket) for socket()
1. `#define SOCK_FSTACK 0x1000`
2. when we want to create socket by fstack, we code like this :
`s = ngx_socket(domain, type | SOCK_FSTACK , protocol);`
2018-02-24 16:45:10 +08:00
chenwei 3d7e1b6b15 Nginx : directive proxy_kernel_network_stack
1. Add a new directive proxy_kernel_network_stack :
    Syntax: 	proxy_kernel_network_stack on | off;
    Default: 	proxy_kernel_network_stack off;
   Context: 	http, stream, mail, server
  This directive is available only when NGX_HAVE_FF_STACK is defined.
  Determines whether proxy should go throught kernel network stack or fstack.
2.Update F-Stack_Nginx_APP_Guide.md
2018-02-05 15:55:20 +08:00
chenwei d65c1f94b4 Nginx : replace macro with inline function to implement ```ngx_ff_skip_listening_socket``` 2018-02-01 16:30:46 +08:00
chenwei 19acab5d5f Nginx: hijack `recvmsg`.
Since Nginx calls `recvmsg` in stream with udp, we must
hijack this function, so that the network IO can pass through
f-stack.
2018-01-31 13:47:44 +08:00
chenwei c41d837fae Nginx : ngx_configure_listening_sockets
1. Nginx based on fstack delays setting up server on fstack until ngx_worker_process_init. ngx_configure_listening_sockets should as well.
2. FStack does not support IP_PKTINFO
2018-01-31 13:37:58 +08:00
chenwei 8c19c41dfc Nginx : Fix Compile error
Fix compile error when configure nginx with --with-stream
2018-01-31 09:02:25 +08:00
chenwei fc3a7422fa Nginx: Restore ngx_get_connection and ngx_free_connection
The code that we used to preserve ngx_get_connection and ngx_free_connection thread safety , is not necessary now.
2018-01-29 16:41:35 +08:00
陈威 5eaa396dce Nginx: Cut out code about poll-kernel frequency
Cut out unreasonable code about poll-kernel frequency
2018-01-26 17:14:13 +08:00
陈威 3fc9d4594d Nginx: Restore unexpected Comment 2018-01-17 17:33:01 -06:00
chenwei 57f062150d Nginx : Get rid of "ff_host" thread, so single thread is used for both fstack and kernel. 2018-01-17 17:51:08 +08:00
logwang a20feca0fb Nginx: fix crash when server configuration item [`kernel_network_stack`] is on and uses `proxy_pass`.
When nginx is configured like this:
```
server {
    listen       8000;
    kernel_network_stack on;
    location / {
        proxy_pass http://127.0.0.1:8080/;
    }
}
```
nginx will crash, becasue kernel network stack is handled in a single thread, but we have hijacked all the socket apis, it causes that all apis enter to f-stack's path which is in main thread.
2018-01-11 18:20:41 +08:00
chenwei 65074cf4f4 Nginx : The I/O functions with glue code may be called before ngx_max_sockets is initialized, fix this error. 2017-12-14 15:07:30 +08:00
chenwei fb8ab126f5 Nginx : Follow nginx programming convention - indent. 2017-12-14 14:55:36 +08:00
chenwei 03e8baeb66 rename "timers" and "events_posted" 2017-12-09 15:24:58 +08:00
chenwei a7886ec8af rename ngx_event_actions_dy to ngx_ff_host_event_actions 2017-12-09 15:02:13 +08:00
chenwei 6b647d46a9 rename module module ff_channel to ff_host_event 2017-12-09 14:55:48 +08:00
chenwei d7bd9e987b Using a more friendly name : belong_to_aeds to belong_to_host 2017-12-09 14:18:11 +08:00
chenwei 4b4f027dad Using a more friendly name
1.  remove the assert(ff_fdisused(sockfd))
2017-12-09 14:07:08 +08:00
chenwei 70bb2888cb Nginx: support kernel network stack, so we can do what fstack can't do,
e.g. unix socket, ipc (with APP on kernel network stack), packet from kernel network stack.
1. Add a new directive kernel_network_stack :
    Syntax: 	kernel_network_stack on | off;
    Default: 	kernel_network_stack off;
   Context: 	http, server
  This directive is available only when NGX_HAVE_FF_STACK is defined.
  Determines whether server should run on kernel network stack or fstack.
2. Use a simpler and  more effective solution to discriminate fstack fd(file descriptor, only socket for now) from kernel fd.
2017-12-08 18:32:08 +08:00
logwang ffdb15be57 Configuration: optimize the description. 2017-12-01 16:53:57 +08:00
logwang 5ac59bc49a Micro_thread: convert encoding of source files and remove chinese comments. 2017-11-20 22:39:00 +08:00
logwang b1bb619a90 Nginx: fix that worker may crash when reload or recv signals. 2017-11-20 17:06:02 +08:00
logwang 20be49f608 Nginx: hijack `read` and `write`.
Since libssl calls `read` and `write` when SSL handshake, we must
hijack these two functions, so that the network IO can pass through
f-stack.
2017-09-26 17:00:20 +08:00
logwang 1c388a5257 Update f-stack.conf of nginx.
Close #81.
2017-09-25 12:03:26 +08:00
logwang 63fb3d1fbf Fix nginx coredump on virtio vm and support kni.
1.close #67.
2.replace ff_primary process to primary worker process(the first one to
start and the last one to exit).
3.it's not graceful to reload.
2017-09-05 20:24:51 +08:00
logwang 8c92b6e17e Merge pull request #65 from nickcooper-zhangtonghao/master
redis: Use the ff_gettimeofday instead of gettimeofday.
2017-08-31 11:34:42 +08:00
Tonghao Zhang 1bdefaef52 redis: Use the ff_gettimeofday instead of gettimeofday.
In the redis, the gettimeofday uses too much CPU, even using the
vdso. This patch is useful to avoid wasting CPU cycles and
improve the performance.

Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
2017-08-30 19:48:48 -07:00
ppliu1979 a4079f754c fix a compile error in ngx_ff_channel.c 2017-08-25 19:03:59 +08:00
logwang 9335f1b92e Merge pull request #60 from nickcooper-zhangtonghao/master
Fix bug when using the redis
2017-08-25 15:20:40 +08:00