mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-10-31 08:11:24 +01:00 
			
		
		
		
	Include coarse CPU and Memory use in stats callbacks.
This requires the psutil module, and is still opt-in based on the report_stats config option.
This commit is contained in:
		
							parent
							
								
									03a26e28d9
								
							
						
					
					
						commit
						ef520d8d0e
					
				
							
								
								
									
										12
									
								
								UPGRADE.rst
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								UPGRADE.rst
									
									
									
									
									
								
							| @ -48,6 +48,18 @@ returned by the Client-Server API: | |||||||
|     # configured on port 443. |     # configured on port 443. | ||||||
|     curl -kv https://<host.name>/_matrix/client/versions 2>&1 | grep "Server:" |     curl -kv https://<host.name>/_matrix/client/versions 2>&1 | grep "Server:" | ||||||
| 
 | 
 | ||||||
|  | Upgrading to $NEXT_VERSION | ||||||
|  | ==================== | ||||||
|  | 
 | ||||||
|  | This release expands the anonymous usage stats sent if the opt-in | ||||||
|  | ``report_stats`` configuration is set to ``true``. We now capture RSS memory  | ||||||
|  | and cpu use at a very coarse level. This requires administrators to install | ||||||
|  | the optional ``psutil`` python module. | ||||||
|  | 
 | ||||||
|  | We would appreciate it if you could assist by ensuring this module is available | ||||||
|  | and ``report_stats`` is enabled. This will let us see if performance changes to | ||||||
|  | synapse are having an impact to the general community. | ||||||
|  | 
 | ||||||
| Upgrading to v0.15.0 | Upgrading to v0.15.0 | ||||||
| ==================== | ==================== | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -401,6 +401,7 @@ def run(hs): | |||||||
|     start_time = clock.time() |     start_time = clock.time() | ||||||
| 
 | 
 | ||||||
|     stats = {} |     stats = {} | ||||||
|  |     stats_process = None | ||||||
| 
 | 
 | ||||||
|     @defer.inlineCallbacks |     @defer.inlineCallbacks | ||||||
|     def phone_stats_home(): |     def phone_stats_home(): | ||||||
| @ -427,6 +428,10 @@ def run(hs): | |||||||
| 
 | 
 | ||||||
|         daily_sent_messages = yield hs.get_datastore().count_daily_sent_messages() |         daily_sent_messages = yield hs.get_datastore().count_daily_sent_messages() | ||||||
|         stats["daily_sent_messages"] = daily_sent_messages |         stats["daily_sent_messages"] = daily_sent_messages | ||||||
|  |         if stats_process is not None: | ||||||
|  |             with stats_process.oneshot(): | ||||||
|  |                 stats["memory_rss"] = stats_process.memory_info().rss | ||||||
|  |                 stats["cpu_average"] = int(stats_process.cpu_info(interval=None)) | ||||||
| 
 | 
 | ||||||
|         logger.info("Reporting stats to matrix.org: %s" % (stats,)) |         logger.info("Reporting stats to matrix.org: %s" % (stats,)) | ||||||
|         try: |         try: | ||||||
| @ -438,6 +443,21 @@ def run(hs): | |||||||
|             logger.warn("Error reporting stats: %s", e) |             logger.warn("Error reporting stats: %s", e) | ||||||
| 
 | 
 | ||||||
|     if hs.config.report_stats: |     if hs.config.report_stats: | ||||||
|  |         try: | ||||||
|  |             import psutil | ||||||
|  |             stats_process = psutil.Process() | ||||||
|  |             # Ensure we can fetch both, and make the initial request for cpu_percent | ||||||
|  |             # so the next request will use this as the initial point. | ||||||
|  |             stats_process.memory_info().rss | ||||||
|  |             stats_process.cpu_percent(interval=None) | ||||||
|  |         except (ImportError, AttributeError): | ||||||
|  |             logger.warn( | ||||||
|  |                     "report_stats enabled but psutil is not installed or incorrect version." | ||||||
|  |                     " Disabling reporting of memory/cpu stats." | ||||||
|  |                     " Ensuring psutil is available will help matrix track performance changes across releases." | ||||||
|  |             ) | ||||||
|  |             stats_process = None | ||||||
|  | 
 | ||||||
|         logger.info("Scheduling stats reporting for 3 hour intervals") |         logger.info("Scheduling stats reporting for 3 hour intervals") | ||||||
|         clock.looping_call(phone_stats_home, 3 * 60 * 60 * 1000) |         clock.looping_call(phone_stats_home, 3 * 60 * 60 * 1000) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user