Photon 서버 환경 설정
Instance
Multiple instances are supported. Each instance has its own node in the config file.
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | ConfigName | – | – | Optional "ConfigName" value from config file; if present it will be logged. | | ReportOnJob | – | FALSE | Causes Photon to determine if it is running inside a Win32 job object and if so reports on the limits currently imposed. | | LogFileLocation | – | | Sets the path for logfiles. Default is the location where the server is started. Can be absolute or relative to PhotonSocketServer.exe. | | EnablePerformanceCounters | – | TRUE | Determines whether the server will enable its performance counters. The implementation creates a shared memory segment requiring suitable privileges. Set to "false" to run without those privileges. | | MaxMessageSize | – | 512000 | Maximum number of bytes for a UDP, TCP or WebSockets message. If exceeded, the client will be disconnected. Can be overwritten in the appropriate listener. | | ShutdownTimeout | – | 30000 | When a Photon shutdown has not finished after this timeout (in ms), the process is forcibly killed. | | DisplayName | – | – | An optional display name for this instance, shown in Photon Control. |TCP
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | TCPBufferSize | – | 4096 | The size of buffer used during TCP data transfer. Does not restrict message size. Ideal to have slightly more than the average message size. | | TCPBufferAllocatorPoolSize | – | 500 | The number of buffers used for TCP data transfer kept in the pool for later reuse. Trade-off of speed vs resources. | | StreamSocketAllocatorPoolSize | – | 250 | The number of TCP sockets kept in the pool for later reuse. Trade-off of speed vs resources. |UDP/ENet
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | DatagramSocketAllocatorPoolSize | – | 1000 | The number of datagram sockets kept in the pool for later reuse. Trade-off of speed vs resources. | | PingIntervalMilliseconds | – | 1000 | How often a ping is sent from server to client when no data is flowing. A larger value leads to less server load. Defaults to the ENet standard value of 500ms. | | DataSendingDelayMilliseconds | 5 | 5 | How long the server waits to accumulate more data before sending. Larger values = fewer datagrams but higher latency. | | AckSendingDelayMilliseconds | 5 | 5 | How long the server waits before sending an ACK, allowing it to piggyback onto a data packet. Doesn't increase latency. | | ENETBufferAllocatorPoolSize | – | 5000 | The number of buffers kept in the pool for later reuse. Trade-off of speed vs resources. | | ValidateCRCifPresent | – | FALSE | If enabled, incoming datagrams with an optional CRC value will have their checksum validated. Outbound datagrams to peers created with CRC will also include the CRC value. | | MinimumTimeout | 5000 | 5000 | Minimum time before an ENet peer's lack of response causes a timeout disconnect. Actual time is determined dynamically per peer based on RTT history. | | MaximumTimeout | 30000 | 30000 | Maximum time before an ENet peer's lack of response causes a timeout disconnect. Actual time is determined dynamically per peer based on RTT history. | | MinimumRetransmitTimeout | 200 | – | Sets a minimum retransmission time. Low-latency peers may be delayed. Reduces retransmission speed and server load. | | MaximumRetransmitTimeout | 0 | – | Defines the maximum retransmission time. 0 = feature is turned off. | | RTTACKAdjustmentTimeout | 0 | – | When set, the last retransmit-timeout is used (fast resend) instead of last retransmit-timeout×2 if the peer received any data during the period. 0 = feature is turned off. |UDP/ENet Throttling
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | PerPeerMaxReliableDataInTransit | 51200 | 16384 | Maximum amount of reliable data (in bytes) a peer can have in-flight without ACK. Once reached, future reliable data is queued. | | PerPeerTransmitRateLimitKBSec | 256 | 256 | Maximum data (reliable + unreliable) that can be sent per second (in KB). When reached, reliable data is queued and unreliable data is dropped. | | PerPeerTransmitRatePeriodMilliseconds | – | 200 | How often the transmit rate limit is checked. Smaller = smoother flow; larger = less server resources used. | | MaxQueuedDataPerPeer | 512000 | 163840 | Maximum amount of reliable data a peer can queue. Once exceeded, future reliable sends return an error code. |Debugging
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | ProduceDumps | – | TRUE | Enable or disable creation of dump files in case of a crash. Dump files are essential to find issues in the Photon Core. | | DumpType | – | Full | Type of crash dumps: "Full", "Maxi", or "Mini". Less information from first to last but also less disk space. | | MaxDumpsToProduce | – | 10 | Maximum number of dump files written. If files are moved or deleted, new ones can be written. |IOPool
Handles all I/O operations such as datagram sending/reception, TCP read completions, etc. Can also handle ENet protocol operations if ENetThreadPool\OnlyDispatchTimers is "true".
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | NumThreads | – | 2 | Number of threads for socket I/O. 4–8 tends to be good. If set to 0, uses 2× the number of CPU cores. |ThreadPool
The "Business Logic" thread pool used for all CLR operations.
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | InitialThreads | – | 4 | Number of threads the thread pool starts with. | | MinThreads | – | 4 | Minimum number of threads in the pool. | | MaxThreads | – | 4 | Maximum number of threads. If Initial, Min, and Max are the same, the pool is static (more efficient). Dynamic pools grow and shrink as demand changes. | | MaxDormantThreads | – | 4 | Maximum number of dormant (idle) threads. Excess threads will be shut down. | | PoolMaintPeriod | – | 5000 | How often (in ms) the pool is maintained to check on and shut down dormant threads. | | DispatchTimeout | – | 100 | If a work item is dispatched and this many milliseconds pass before a worker picks it up, a new thread may be started. |ENetThreadPool
Used for all ENet protocol operations: deblocking inbound datagrams, ACK handling, retransmission, and ping generation.
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | InitialThreads | – | 2 | See ThreadPool. | | MinThreads | – | 2 | See ThreadPool. | | MaxThreads | – | 2 | See ThreadPool. | | MaxDormantThreads | – | 5 | See ThreadPool. | | PoolMaintPeriod | – | 5000 | See ThreadPool. | | DispatchTimeout | – | 100 | See ThreadPool. | | OnlyDispatchTimers | – | FALSE | If true, only ENet timer operations use this pool. If false, all ENet protocol operations are dispatched to this pool. |Runtime
Defines the Photon Runtime behavior.
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | Assembly | PhotonHostRuntime, Culture=neutral | – | The Photon Runtime assembly to use. MUST be signed by the Exit Games Photon Runtime key. PublicKeyToken must NOT be specified. | | CLRVersion | – | – | By default, the latest .NET runtime is used. Per instance, allows loading a specific version (e.g. "v4.0" or "v2.0"). | | EnableMDA | – | FALSE | Enables managed debugging assistants. Configure with a PhotonSocketServer.exe.mda.config file. | | Type | PhotonHostRuntime.PhotonDomainManager | | The type used as the domain manager. MUST derive from IPhotonDomainManager. | | UnhandledExceptionPolicy | Ignore | Ignore | Options: Ignore, ReloadAppDomain, TerminateProcess. |Applications
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | Default | – | – | A default application to use if no application is specified. | | PassUnknownAppsToDefaultApp | – | TRUE | If true, unknown application names use the default app. If false, it's a fatal error terminating the connection. |Application
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | Name | – | – | Arbitrary name for the application, used for dispatch. | | SharedDirectory | – | "Shared" | Contains shared assemblies. Located under the Base Directory. | | BaseDirectory | – | – | Should contain a "bin" folder with all assemblies, config files, etc. | | Assembly | – | – | Details of the assembly to use. Can contain a complete assembly specification string including PublicKeyToken. | | Type | – | – | The type loaded as the application. MUST derive from IPhotonApplication. | | EnableShadowCopy | – | FALSE | If enabled, the CLR creates copies of assembly files in a private directory, allowing originals to be overwritten for updates. | | EnableAutoRestart | – | FALSE | If enabled, the app restarts automatically on file changes. Existing connections continue until all disconnect, then the old app domain is unloaded. | | ForceAutoRestart | TRUE | FALSE | Implies EnableAutoRestart but aborts all existing connections rather than waiting for them to disconnect. | | RestartDelayMilliseconds | – | 1000 | File-change restarts can be delayed with this setting. | | WatchFiles | – | "" | No entry means watch everything. Example: `WatchFiles="dll;config;Lite.XML"` | | ExcludeFiles | – | "" | No entry means exclude nothing. Example: `ExcludeFiles="log4net.config"` | | StartTimeoutMilliseconds | – | 0 | Photon shuts down if the app doesn't start in time. 0 = no timeout. | | StopTimeoutMilliseconds | – | 0 | Photon shuts down if the app doesn't stop in time. 0 = no timeout. |TCPListener
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | IPAddress | 0.0.0.0 | – | The IP address to listen on. 0.0.0.0 = all interfaces. | | IPAddressIPv6 | :: | – | The IPv6 address to listen on. :: = all interfaces. | | Port | 4530 | 4530 | The port to listen on. | | ListenBacklog | – | 150 | Size of the listen backlog queue. Affects simultaneous connection establishment, not active concurrent connections. | | RecvBufferSize | – | 0 | TCP recv buffer size (also determines TCP window size). 0 = use OS default. | | SendBufferSize | – | 0 | TCP send buffer size. 0 = use OS default. | | MaxPendingWrites | – | 50 | Flow control: max pending write buffers. | | MaxQueuedBuffers | – | 200 | Flow control: max queued write buffers. More than pending writes reduces non-paged pool usage. | | DisableNagle | TRUE | TRUE | If true, Nagle is disabled and outbound TCP data is sent immediately. May improve latency at the expense of more datagrams. | | InactivityTimeout | 5000 | 5000 | Time (ms) allowed between receiving data. Exceeded = connection aborted. 0 = disabled. | | DisconnectTimeout | – | 120000 | Time (ms) allowed for the client to close the connection after being disconnected by the application. | | OverrideApplication | – | – | Override the application for this connector. Client-sent application selection is ignored. | | DefaultApplication | – | – | Default application for this listener if a client connects to an unloaded app. Overrides the global Default. | | PolicyApplication | – | – | Application used for policy requests sent to this listener. | | MaxInboundMessageSize | – | – | Max bytes for an inbound message. Exceeding disconnects the client. Default is MaxMessageSize. | | MaxOutboundMessageSize | – | – | Max bytes for an outbound message. Exceeding disconnects the client. Default is MaxMessageSize. | | CustomConnectMessageIsRequired | – | FALSE | If true, a custom prefix/suffix is required on each Connect message. | | CustomConnectMessagePrefix | – | – | String ignored if sent as a prefix of a client's connect message. | | CustomConnectMessageSuffix | – | – | String ignored if sent as a suffix of a client's connect message. |UDPListener
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | IPAddress | 0.0.0.0 | – | The IP address to listen on. 0.0.0.0 = all interfaces. | | IPAddressIPv6 | :: | – | The IPv6 address to listen on. :: = all interfaces. | | Port | 5055 | 5055 | The port to listen on. | | ListenBacklog | – | 500 | See TCPListener. | | RecvBufferSize | – | – | See TCPListener. | | SendBufferSize | – | – | See TCPListener. | | OverrideApplication | – | – | See TCPListener. | | DefaultApplication | – | – | See TCPListener. | | MaxInboundMessageSize | – | – | See TCPListener. | | MaxOutboundMessageSize | – | – | See TCPListener. |WebSocketListener
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | IPAddress | 0.0.0.0 | – | The IP address to listen on. 0.0.0.0 = all interfaces. | | IPAddressIPv6 | :: | – | The IPv6 address to listen on. :: = all interfaces. | | Port | – | 9091 | The port to listen on. | | ListenBacklog | – | – | See TCPListener. | | RecvBufferSize | – | – | See TCPListener. | | SendBufferSize | – | – | See TCPListener. | | DisableNagle | TRUE | TRUE | See TCPListener. | | InactivityTimeout | 10000 | 10000 | See TCPListener. | | OverrideApplication | – | – | See TCPListener. | | DefaultApplication | – | – | See TCPListener. | | MaxInboundMessageSize | – | – | See TCPListener. | | MaxOutboundMessageSize | – | – | See TCPListener. | | MaxPendingWrites | – | – | See TCPListener. | | MaxQueuedBuffers | – | – | See TCPListener. | | DisconnectTimeout | – | – | See TCPListener. |SSL
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | Secure | | FALSE | Set to true to secure a listener with SSL. | | StoreName | – | MY | Name of the certificate store. | | CertificateName | – | Photon | Name of the certificate to use. | | UseMachineStore | – | FALSE | Defines if the machine store should be used. |TCPPolicyListener
Note: TCPFlashListener is deprecated — use TCPPolicyListener instead.
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | Address | – | – | The IP address to listen on. 0.0.0.0 = all interfaces. | | Port | – | 943 | The port to listen on. | | Application | – | – | Defines the application for this listener. | | ListenBacklog | – | – | See TCPListener. | | InactivityTimeout | – | 1000 | See TCPListener. |ConfigServer
If present, configures a listener presenting a text menu interface to telnet clients for managing apps and server shutdown.
| Setting | Photon Default | Config Default | Description | | --- | --- | --- | --- | | IPAddress | – | – | The IP address to listen on. 0.0.0.0 = all interfaces. | | Port | – | – | The port to listen on. | | ListenBacklog | – | – | See TCPListener. |