PerformanceAnalyzer
作者:rebot | 分类:模组
Minecraft 版本: 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 1.21.11
平台: paper purpur spigot
标签: management optimization utility
Why PerformanceAnalyzer?
Most monitoring plugins tell you that your server is lagging. PerformanceAnalyzer tells you why.
When a TPS drop or MSPT spike occurs, the plugin automatically captures a full snapshot of your server state — loaded chunks, entity counts, player activity, suspect plugins — so you can diagnose the problem instantly instead of guessing.
⚡ New in v3.0.0
- AntiCheat is now its own plugin. PerformanceAnalyzer is now a focused, pure performance monitor. The XRay/Movement detection lives on in the standalone BSAntiCheat plugin — install it alongside PerformanceAnalyzer and the GUI will link the two together automatically.
- Per-second drop detection — performance drops are now sampled every second (decoupled from the database logging interval), so short-lived spikes are no longer missed.
- REST API is live — JSON endpoints for Grafana/Prometheus dashboards.
- Developer API — other plugins can read live TPS/MSPT/heap/entity data.
Key Features
Real-Time Performance Monitoring
- TPS, MSPT & Heap tracking with historical data and ASCII sparklines
- Spark Integration for highly accurate TPS (10s/1m/5m), MSPT (avg/p95/max), and CPU data
- ProtocolLib Integration for packet analysis and flood detection
- Database Logging (SQLite or MySQL) with async batch writes via HikariCP
- Fallback File Logging — if the database goes down, metrics are written to a file instead of being lost
Automatic Lag Diagnosis
- Performance Drop Detection — triggers automatically when TPS drops or MSPT spikes, sampled every second
- Full Server Snapshots — captures chunks, entities, memory, and player locations at the moment of the drop
- Accurate Low/High Tracking — reports the actual worst TPS/MSPT seen during the drop window
- Lag Source Analysis — identifies the players and plugins most likely responsible
- Problematic Chunk Detection — finds chunks overloaded with tile entities or redstone
- Chunk Thrashing Detection — spots chunks that load/unload too frequently
- Throttled & quiet — the expensive deep analysis is rate-limited and stays out of the console unless debug mode is on, so the diagnostics never make the lag worse
Interactive GUI System
- Performance Dashboard — live TPS, MSPT, heap with auto-refresh
- Lag Analysis Page — top 5 active players and suspect plugins with risk scores
- Performance Drops Page — browse up to 21 recent drops, click for detailed reports
- Config GUI — toggle settings without touching files
- Companion detection — shows BSAntiCheat status when the AntiCheat plugin is installed
- Multi-page navigation, color-coded items, intuitive design
Silent Mode / Streamer Mode
/perfsilent— mute all alert notifications in chat/perfsilent performance— mute just the performance alert category/perfsilent list— view your current preferences/perfsilent reset— receive all alerts again- Persistent across server restarts
- Perfect for streamers, builders, or admins who don't need constant notifications
Discord Webhook Integration
- Automatic notifications for TPS drops, high MSPT, heap warnings, and packet floods
- Color-coded embeds per alert type
- Configurable: choose exactly which events get reported
- Async, rate-limited HTTP requests — zero performance impact
- SSRF-protected: only valid Discord webhook URLs are accepted
Auto Entity Cleaner
- Priority-based removal: items > projectiles > monsters > animals
- Protects named entities, tamed animals, villagers, and boss mobs
- Per-world and per-chunk limits
- Dry-run mode for safe testing before enabling
Additional Tools
- World Statistics (
/worldstats) — entities, chunks, density, trend analysis per world - Entity Analysis (
/entitystats) — breakdown by category, hotspot detection - Chunk Statistics (
/chunkstats) — load tracking, problematic chunks, thrashing - REST API — JSON endpoints for Grafana/Prometheus dashboards with API key auth
- Developer API —
PerformanceAPIfor other plugins to read live metrics - Auto Database Cleanup — configurable retention (default: 30 days)
- Multi-Language — English & German, easily extensible
Commands
| Command | Description | Permission |
|---|---|---|
/perfstatus |
Live TPS, MSPT, heap data | performance.status |
/perfhistory [min] |
Historical MSPT sparkline & stats | performance.history |
/perfgui |
Open the interactive GUI | performance.gui |
/perfreload |
Reload plugin configuration | performance.admin |
/perfsilent [type] |
Toggle alert notifications (streamer mode) | performance.admin |
/perfdrops [#] |
View/analyze performance drops | performance.admin |
/worldstats [world] |
Per-world statistics (alias /ws) |
performance.admin |
/entitystats [world] |
Entity analysis & hotspots (alias /es) |
performance.admin |
/chunkstats [sub] |
Chunk load tracking & problems (alias /cs) |
performance.admin |
Permissions
| Permission | Description | Default |
|---|---|---|
performance.status |
Use /perfstatus |
Everyone |
performance.history |
Use /perfhistory |
Everyone |
performance.gui |
Use /perfgui |
Everyone |
performance.admin |
Admin commands & alert notifications | OP |
performance.silent |
Use silent mode to mute alerts | OP |
Configuration Highlights
Database (SQLite or MySQL) ```yaml database: type: sqlite # or 'mysql' sqlite_file: "plugins/PerformanceAnalyzer/perf.db" retention_days: 30 # Auto-cleanup (0 = disabled) fallback_file_logging: true # Log to file if the DB is unavailable fallback_log_file: "plugins/PerformanceAnalyzer/fallback.log" pool: max_pool_size: 10 minimum_idle: 2 ``` Performance Thresholds ```yaml thresholds: mspt: 50.0 # MSPT warning (ms) heap_usage_percent: 80.0 # Heap warning (%) tps_drop: 19.0 # TPS drop warning packet_flood_per_tick: 1000.0 # Packet flood detection ``` Lag Analysis Thresholds All thresholds are adjustable for your hardware: ```yaml lag_analysis: player_tracking: true plugin_analysis: true chunk_analysis_timeout_ms: 5000 # Chunk thresholds (Standard | Powerful | Weak) chunk_tile_entities_threshold: 10 # 10 | 20-30 | 5-8 chunk_redstone_threshold: 30 # 30 | 50-100 | 15-20 chunk_entity_warning: 50 # 50 | 80-100 | 30-40 chunk_entity_critical: 100 # 100 | 150-200 | 60-80 # World thresholds world_entity_warning: 5000 world_entity_critical: 10000 ``` Discord Webhook ```yaml discord: enabled: false webhook_url: "" alert_types: high_mspt: true tps_drop: true high_heap: true packet_flood: true ``` REST API ```yaml api: enabled: false port: 8080 key: "changeme" # IMPORTANT: Set a secure key! The server won't start otherwise. ``` Endpoints: `/api/health`, `/api/metrics`, `/api/worlds`, `/api/trends` Authentication: `Authorization: Bearer ` Auto Entity Cleaner ```yaml entity_cleaner: enabled: false interval_seconds: 300 world_limit: 5000 chunk_limit: 100 dry_run: true # Test mode (logs only, no removal) protect_villagers: true protect_item_frames: true blacklist: ["ENDER_DRAGON", "WITHER", "WARDEN"] world_whitelist: [] # Worlds that are never cleaned ```Developer API
Other plugins can read live performance data directly:
PerformanceAPI api = (PerformanceAPI) Bukkit.getPluginManager().getPlugin("PerformanceAnalyzer");
double tps = api.getCurrentTPS();
double mspt = api.getCurrentMSPT();
double heap = api.getHeapUsagePercent();
int entities = api.getTotalEntityCount();
Language Support
English and German are included. Language files live in plugins/PerformanceAnalyzer/lang/ and are fully customizable.
Adding a new language:
- Copy
en.ymlto your language code (e.g.fr.yml) - Translate all messages
- Set
language: frinconfig.yml - Run
/perfreload
Looking for AntiCheat?
As of v3.0.0, the XRay and Movement detection has moved into its own dedicated plugin: BSAntiCheat. Install both side by side — PerformanceAnalyzer handles performance and lag diagnosis, BSAntiCheat handles cheat detection, and the GUI links them together.
Optional Dependencies
| Plugin | Benefit |
|---|---|
| spark | Accurate TPS (10s/1m/5m), MSPT (avg/p95/max), CPU monitoring |
| ProtocolLib | Packet analysis & flood detection |
| BSAntiCheat | Companion AntiCheat plugin (XRay & movement detection) |
All integrations are optional — the plugin works fully standalone.
Requirements
- Java 21
- Paper 1.21.4 – 1.21.x
- Thread-safe, async operations, minimal performance overhead
Config Auto-Migration
When updating, your existing config is never overwritten. New settings are automatically added with sensible defaults. Just replace the JAR and restart.
Special Thanks
To ELITEK3V for testing.
请登录后举报
暂无评论,抢个沙发吧~