|
32 | 32 | launch_server = None |
33 | 33 | DefaultAddons = None |
34 | 34 | PYTHON_EXECUTABLE = sys.executable |
35 | | -ENDPOINT_CAPTURE_TIMEOUT = int(os.environ.get('ENDPOINT_CAPTURE_TIMEOUT', '45')) |
| 35 | +ENDPOINT_CAPTURE_TIMEOUT = int(os.environ.get('ENDPOINT_CAPTURE_TIMEOUT', '90')) |
36 | 36 | DEFAULT_SERVER_PORT = int(os.environ.get('DEFAULT_FASTAPI_PORT', '2048')) |
37 | 37 | DEFAULT_CAMOUFOX_PORT = int(os.environ.get('DEFAULT_CAMOUFOX_PORT', '9222')) |
38 | 38 | DEFAULT_STREAM_PORT = int(os.environ.get('STREAM_PORT', '3120')) |
@@ -129,7 +129,7 @@ def cleanup(): |
129 | 129 | camoufox_proc.terminate() |
130 | 130 | elif sys.platform == 'win32': |
131 | 131 | logger.info(f'进程树 (PID: {pid}) 发送终止请求') |
132 | | - subprocess.call(['taskkill', '/T', '/PID', str(pid)]) |
| 132 | + subprocess.call(['taskkill', '/F', '/T', '/PID', str(pid)]) |
133 | 133 | else: |
134 | 134 | logger.info(f' 向 Camoufox (PID: {pid}) 发送 SIGTERM 信号...') |
135 | 135 | camoufox_proc.terminate() |
@@ -465,17 +465,42 @@ def determine_proxy_configuration(internal_camoufox_proxy_arg=None): |
465 | 465 | print(f'--- [内部Camoufox启动] 正在调用 camoufox.server.launch_server ... ---', flush=True) |
466 | 466 | try: |
467 | 467 | memory_optimization_prefs = { |
| 468 | + # Disable memory cache |
468 | 469 | 'browser.cache.memory.enable': False, |
469 | 470 | 'browser.cache.memory.capacity': 0, |
470 | | - 'browser.sessionhistory.max_entries': 3, |
| 471 | + # Minimal session history |
| 472 | + 'browser.sessionhistory.max_entries': 2, |
471 | 473 | 'browser.sessionhistory.max_total_viewers': 0, |
| 474 | + # JS memory limits |
472 | 475 | 'javascript.options.mem.gc_frequency': 300, |
473 | | - 'javascript.options.mem.high_water_mark': 128, |
| 476 | + 'javascript.options.mem.high_water_mark': 32, |
| 477 | + 'javascript.options.mem.nursery.max_kb': 2048, |
| 478 | + # Single process mode |
474 | 479 | 'dom.ipc.processCount': 1, |
| 480 | + 'dom.ipc.processCount.webIsolated': 1, |
| 481 | + 'browser.tabs.remote.autostart': False, |
| 482 | + 'browser.tabs.remote.autostart.2': False, |
| 483 | + # Disable unused features |
475 | 484 | 'layout.css.grid-template-masonry-value.enabled': False, |
476 | 485 | 'toolkit.cosmeticAnimations.enabled': False, |
| 486 | + 'media.memory_cache_max_size': 256, |
| 487 | + 'image.mem.max_ms_before_yield': 50, |
| 488 | + # Disable telemetry/background services |
| 489 | + 'datareporting.healthreport.uploadEnabled': False, |
| 490 | + 'datareporting.policy.dataSubmissionEnabled': False, |
| 491 | + 'browser.ping-centre.telemetry': False, |
| 492 | + 'toolkit.telemetry.enabled': False, |
| 493 | + 'toolkit.telemetry.unified': False, |
| 494 | + # Disable disk cache |
| 495 | + 'browser.cache.disk.enable': False, |
| 496 | + 'browser.cache.offline.enable': False, |
| 497 | + # Disable prefetch |
| 498 | + 'network.prefetch-next': False, |
| 499 | + 'network.dns.disablePrefetch': True, |
| 500 | + # Reduce font memory |
| 501 | + 'gfx.font_rendering.fontconfig.max_generic_substitutions': 3, |
477 | 502 | } |
478 | | - launch_args_for_internal_camoufox = {'port': camoufox_port_internal, 'addons': [], 'exclude_addons': [DefaultAddons.UBO], 'window': (1920, 1080), 'firefox_user_prefs': memory_optimization_prefs} |
| 503 | + launch_args_for_internal_camoufox = {'port': camoufox_port_internal, 'addons': [], 'exclude_addons': [DefaultAddons.UBO], 'window': (1280, 720), 'firefox_user_prefs': memory_optimization_prefs} |
479 | 504 | if camoufox_proxy_internal: |
480 | 505 | launch_args_for_internal_camoufox['proxy'] = {'server': camoufox_proxy_internal} |
481 | 506 | if auth_file: |
|
0 commit comments