forked from fediversity/fediversity
		
	First bit of documentation for workers.
This commit is contained in:
		
							parent
							
								
									ab185f749c
								
							
						
					
					
						commit
						ed2ff80197
					
				
					 3 changed files with 93 additions and 21 deletions
				
			
		|  | @ -1,10 +0,0 @@ | |||
| --- | ||||
| gitea: none | ||||
| include_toc: true | ||||
| --- | ||||
| 
 | ||||
| # Standard, monolithic configuration | ||||
| 
 | ||||
| This configuration will be enough for most installations. | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										93
									
								
								matrix/synapse/workers.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								matrix/synapse/workers.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,93 @@ | |||
| --- | ||||
| gitea: none | ||||
| include_toc: true | ||||
| --- | ||||
| 
 | ||||
| # Worker-based setup | ||||
| 
 | ||||
| Very busy servers are brought down because a single thread can't keep up with | ||||
| the load. So you want to create several threads for different types of work. | ||||
| 
 | ||||
| See this [Matrix blog](https://matrix.org/blog/2020/11/03/how-we-fixed-synapse-s-scalability/) | ||||
| for some background information. | ||||
| 
 | ||||
| 
 | ||||
| # Redis | ||||
| 
 | ||||
| First step is to install Redis. | ||||
| 
 | ||||
| ``` | ||||
| apt install redis-server | ||||
| ``` | ||||
| 
 | ||||
| For less overhead we use a UNIX socket instead of a network connection to | ||||
| localhost. Disable the TCP listener and enable the socket in | ||||
| `/etc/redis/redis.conf`: | ||||
| 
 | ||||
| ``` | ||||
| port 0 | ||||
| 
 | ||||
| unixsocket /run/redis/redis-server.sock | ||||
| unixsocketperm 770 | ||||
| ``` | ||||
| 
 | ||||
| Our matrix user (`matrix-synapse`) has to be able to read from and write to | ||||
| that socket, which is created by Redis and owned by `redis:redis`, so we add | ||||
| user `matrix-synapse` to the group `redis`. | ||||
| 
 | ||||
| ``` | ||||
| adduser matrix-synapse redis | ||||
| ``` | ||||
| 
 | ||||
| Restart Redis for these changes to take effect. Check if port 6379 is no | ||||
| longer active, and if the socketfile `/run/redis/redis-server.sock` exists. | ||||
| 
 | ||||
| 
 | ||||
| # Synapse | ||||
| 
 | ||||
| First, create the directory where all the socket files for workers will come, | ||||
| and give it the correct user, group and permission: | ||||
| 
 | ||||
| ``` | ||||
| mkdir /run/matrix-synapse | ||||
| dpkg-statoverride --add --update matrix-synapse matrix-synapse 0770 /run/matrix-synapse | ||||
| ``` | ||||
| 
 | ||||
| Add a replication listener: | ||||
| 
 | ||||
| ``` | ||||
| listeners: | ||||
| 
 | ||||
|   ... | ||||
| 
 | ||||
|   - path: /run/matrix-synapse/replication.sock | ||||
|     mode: 0660 | ||||
|     type: http | ||||
|     resources: | ||||
|       - names: | ||||
|         - replication  | ||||
| ``` | ||||
| 
 | ||||
| Check if the socket is created and has the correct permissions. Now point | ||||
| Synapse at Redis in `conf.d/redis.yaml`: | ||||
| 
 | ||||
| ``` | ||||
| redis: | ||||
|   enabled: true | ||||
|   path: /run/redis/redis-server.sock | ||||
| ``` | ||||
| 
 | ||||
| Check if Synapse can connect to Redis via the socket, you should find log | ||||
| entries like this: | ||||
| 
 | ||||
| ``` | ||||
| synapse.replication.tcp.redis - 292 - INFO - sentinel - Connecting to redis server UNIXAddress('/run/redis/redis-server.sock') | ||||
| synapse.util.httpresourcetree - 56 - INFO - sentinel - Attaching <synapse.replication.http.ReplicationRestResource object at 0x7f95f850d15 | ||||
| 0> to path b'/_synapse/replication' | ||||
| synapse.replication.tcp.redis - 126 - INFO - sentinel - Connected to redis | ||||
| synapse.replication.tcp.redis - 138 - INFO - subscribe-replication-0 - Sending redis SUBSCRIBE for ['matrix.example.com/USER_IP', 'matrix.example.com'] | ||||
| synapse.replication.tcp.redis - 141 - INFO - subscribe-replication-0 - Successfully subscribed to redis stream, sending REPLICATE command | ||||
| synapse.replication.tcp.redis - 146 - INFO - subscribe-replication-0 - REPLICATE successfully sent | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
|  | @ -1,11 +0,0 @@ | |||
| --- | ||||
| gitea: none | ||||
| include_toc: true | ||||
| --- | ||||
| 
 | ||||
| # Advanced configuration with workers | ||||
| 
 | ||||
| This configuration allows optimizing performance, meant for big, busy | ||||
| installations. | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Hans van Zijst
						Hans van Zijst