Commit Graph

72 Commits

Author SHA1 Message Date
Andrey 0bf792c4af Add server_login_retry timeout 2020-01-23 11:35:47 +05:00
Andrey Borodin eb7299748d Implement login timeout 2019-12-02 18:28:39 +05:00
Andrey Borodin 298cdca895
Implement client_max_routing (#72) 2019-10-15 17:15:37 +03:00
Dmitry Simonenko 6c0a1f09f8 odyssey: major rework of io architecture
This patch intend is to improve overall io performance, reduce
cpu and system usage.

Machinarium:

IO read/write logic is highly simplified and now based on conditions
instead of previously made internal readahead buffer and msg
queues. This allows to give user more control over io operations and
avoid doing undesired readahead copying.

Above that, TLS implementation reworked to use async logic instead of
separate BIO layer.

Direct pooling functions removed.

New objects machine_cond_t and machine_iov_t objects.

Odyssey:

Introduced readahead, io and relay objects.

Relay allows to connect two io handles for direct data retransmission
without double copying.

Removed configuration options no longer needed:
packet_read_size, packet_write_queue
2019-01-23 18:43:52 +03:00
Dmitry Simonenko 2e03af9c88 odyssey: major router and shared logic rework
Goal is to improve overall performance during massive peaks
of connecting clients.

This patch makes router a shared structure, instead of
being run in separate system worker thread/coroutine.

Now router and each route object is protected by
separate mutex. Worker threads directly access router object
without calls to separate thread.
2018-12-06 17:23:15 +03:00
Dmitry Simonenko dc3ae5ca2e odyssey: allow to set process/workers priority 2018-11-14 16:14:13 +03:00
Dmitry Simonenko 2d4f61f923 odyssey: introduce packet_write_queue 2018-11-13 18:29:25 +03:00
Dmitry Simonenko fbc037aa23 odyssey: implement packet retransmission in chunks; packet_read_size 2018-10-23 16:51:30 +03:00
Dmitry Simonenko 14d4a7f478 odyssey: add cache_msg_gc_size option and disable default caching 2018-09-26 18:18:17 +03:00
Dmitry Simonenko a790378ddb odyssey: force obsolete clients to disconnect on reload 2018-09-19 13:45:10 +03:00
Dmitry Simonenko b2c07003f1 odyssey: implement config merge method 2018-09-18 18:54:34 +03:00
Dmitry Simonenko 3079cb2636 odyssey: remove route config version id and use obsolete flag only 2018-09-18 18:26:25 +03:00
Dmitry Simonenko 6f6df24ab1 odyssey: add route obsolete 2018-09-18 18:17:04 +03:00
Dmitry Simonenko be65c36a37 odyssey: add storage and route config comparison logic 2018-09-18 17:36:20 +03:00
Dmitry Simonenko de824a3373 odyssey: implement msg_cache gc for oversized msgs 2018-09-05 16:04:36 +03:00
Dmitry Simonenko da7e6ea7a5 odyssey: major io rework and refactoring
This patch moves Odyssey from stream based write caching
to message driven. All write operations are delayed
and happen on a group of messages.

This removes necessity to do IO and wait for write completion during calls
from SSL_write() context. Write timings should behave more predictable now and
number of used syscalls should be also decreased.

This patch also simplifies caching management. All clients are simply
reusing cached messages without prolonged contention.

Several configuration options are no longer used:
pipeline, cache, cache_chunk
2018-08-28 17:43:46 +03:00
Dmitry Simonenko 17dea01e1d odyssey: fix config error message 2018-08-08 16:27:25 +03:00
Dmitry Simonenko c495b9ea8a odyssey: add unix_socket_mode configuration param 2018-07-03 16:02:46 +03:00
Dmitry Simonenko fb023d42cb odyssey: add unix socket support. fix #31 2018-07-02 18:41:17 +03:00
Dmitry Simonenko ae0aed8a55 odyssey: do not force to have default database and user. #19 2018-06-08 18:28:07 +03:00
Dmitry Simonenko f67e0b80cc odyssey: properly validate coroutine_stack_size 2018-06-05 13:02:58 +03:00
Dmitry Simonenko cf3e99ecca odyssey: implement coroutine_stack_size config param. #9 2018-06-04 14:51:13 +03:00
Dmitry Simonenko f5a4bd9a35 odyssey: support configurable list of common names to check 2018-05-10 15:49:31 +03:00
Dmitry Simonenko a907873715 odyssey: implement authenitcation "cert" 2018-04-26 16:02:18 +03:00
Dmitry Simonenko 5ca3fa926a odyssey: update source file headers 2018-04-04 16:19:58 +03:00
Dmitry Simonenko 38430a9d51 odyssey: remove config versioning 2018-03-21 17:36:57 +03:00
Dmitry Simonenko 3e88652ca0 odyssey: disable cache_chunk by default 2018-03-16 17:06:48 +03:00
Dmitry Simonenko f108dcba09 odyssey: project rename 2018-03-12 17:03:15 +03:00
Dmitry Simonenko bb826db7e8 odissey: major scheme rework, rename it to config 2018-03-06 18:23:52 +03:00
Dmitry Simonenko 4df9f8e760 odissey: move config to config_reader 2018-03-05 17:24:30 +03:00
Dmitry Simonenko bb34b84101 odissey: add pipeline configuration 2018-02-27 18:38:53 +03:00
Dmitry Simonenko b208a77954 odissey: allow to configure coroutine cache size 2018-02-26 17:34:06 +03:00
Dmitry Simonenko db109ca7db odissey: allow to configure number of resolvers threads 2018-02-26 17:29:10 +03:00
Dmitry Simonenko 9f505cb2c7 odissey: add cache and cache_chunk configuration options 2018-02-14 14:55:38 +03:00
Dmitry Simonenko 0b1f23014e odissey: remove pipelining tweak 2017-12-08 18:39:45 +03:00
Dmitry Simonenko efe40e93e8 odissey: remove pool_discard tweak 2017-12-08 17:46:14 +03:00
Dmitry Simonenko 0e46fffd92 odissey: add log_debug settings per route 2017-12-05 15:32:08 +03:00
Dmitry Simonenko 7991ee0fb0 odissey: use copy safe od_snprintf() implementation 2017-11-27 15:54:16 +03:00
Dmitry Simonenko 220c211387 odissey: add log_query on/off configuration tweak 2017-10-26 15:54:32 +03:00
Dmitry Simonenko 8d607df67d odissey: major rework of parameter status update logic 2017-10-07 15:30:00 +03:00
Dmitry Simonenko f3dba52bf3 odissey: add auth_query config options 2017-09-25 17:10:44 +03:00
Dmitry Simonenko 7e217b3b5a odissey: major logging rework (introduce log format) 2017-09-21 16:44:19 +03:00
Dmitry Simonenko 2f5b3de41e odissey: add log_ prefix to syslog config options 2017-09-18 16:14:52 +03:00
Dmitry Simonenko f2aa854450 odissey: use error object instead of logger for config parsing 2017-09-15 16:52:11 +03:00
Dmitry Simonenko 5b29494781 odissey: implement detached error object 2017-09-15 16:08:42 +03:00
Dmitry Simonenko e9eeca8a95 odissey: add client_fwd_error configuration tweak 2017-09-12 16:45:04 +03:00
Dmitry Simonenko 70ac93378f odissey: configure and send timezone to a client 2017-09-01 16:29:46 +03:00
Dmitry Simonenko b3c1edb929 odissey: add client_encoding and datestyle to config 2017-08-31 17:14:58 +03:00
Dmitry Simonenko c86726bbca odissey: allow to define serveral listen servers 2017-08-29 17:43:41 +03:00
Dmitry Simonenko ad900ce38c odissey: split log_statistics into log_stats and stat_interval 2017-08-11 17:11:44 +03:00