PDA

View Full Version : why it lags at the initial connection?


Rydia
10-26-2006, 07:03 AM
ioFTPD lags for 3~7 seconds when an IP connect it at the first time
but after that all will be fast enough
what can i do to make the connection faster?

FTPServerTools
10-26-2006, 10:51 AM
Disable your scripts and try it then. io doesnt really lag. It needs to read some files when you login but if you have tons of scripts then the delay can be obvious. Also you need to see where exactly the lag occurs.. In the connect or in the first dir listing?

Harm
10-26-2006, 11:02 AM
When is the client waiting? You could you paste a connection log that includes timestamps to show us.

Could ioFTPD be waiting for an ident response? In the [Network] section of ioFTPD.ini, there's a setting called Ident_Timeout. This setting defines how long ioFTPD will wait for an ident response before continuing.

Rydia
10-26-2006, 08:29 PM
Disable your scripts and try it then. io doesnt really lag. It needs to read some files when you login but if you have tons of scripts then the delay can be obvious. Also you need to see where exactly the lag occurs.. In the connect or in the first dir listing?
no scripts at all...It lags in the connect
after login it's the best in transfer speed & command speed

I saw some words about different working modes between traditional FTPDs & new FTPDs:
serv-u is working on a traditional mode - a main thread is listening. it create threads after accepting connections. number of threads increases as connections increase

I guess io threads are for connections only and worker threads are for other things
but it takes much time for io threads to deliver their jobs to worker threads...
after login it's fast enough, because only worker threads are working, without threads delivery & convertion

Rydia
10-26-2006, 08:39 PM
When is the client waiting? You could you paste a connection log that includes timestamps to show us.

Could ioFTPD be waiting for an ident response? In the [Network] section of ioFTPD.ini, there's a setting called Ident_Timeout. This setting defines how long ioFTPD will wait for an ident response before continuing.

okay, here it is. Be attention to [09:32:57]...
On my PC it lags for 1~2 seconds, but on some other machine with WinXP it lags for even 7 seconds
[09:32:56] [L] Connecting to SJC_20_Anonymous -> IP=166.111.112.113 PORT=20
[09:32:56] [L] Connected to SJC_20_Anonymous
[09:32:57] [L] 220 ClawHammer FTP Ready
[09:32:57] [L] USER anonymous
[09:32:57] [L] 331 Password required for anonymous.
[09:32:57] [L] PASS (hidden)
[09:32:57] [L] 230-Welcome to SJC FTP Server
[09:32:57] [L] 230-Admin: drw04@mails.tsinghua.edu.cn
[09:32:57] [L] 230-Users online: 1
[09:32:57] [L] 230-
[09:32:57] [L] 230-ClawHammer says:
[09:32:57] [L] 230-I'm lag now but I'll do best after login :-)
[09:32:57] [L] 230 User anonymous logged in.
[09:32:57] [L] SYST
[09:32:57] [L] 215 UNIX Type: L8
[09:32:57] [L] FEAT
[09:32:57] [L] 500 'FEAT': Command not understood
[09:32:57] [L] REST 100
[09:32:57] [L] 350 Restarting at 100. Send STORE or RETRIEVE to initiate transfer.
[09:32:57] [L] REST 0
[09:32:57] [L] 350 Restarting at 0. Send STORE or RETRIEVE to initiate transfer.
[09:32:57] [L] PWD
[09:32:57] [L] 257 "/" is current directory.

and here is part of my ini file..Dual-core Xeon 2.8G, 2G RAM, 1Gbps LAN, Win2k3 Server Enterprise, with 100 users
[Threads]
Process_Priority = NORMAL # Suggested process base priority (Idle/Normal/High/Realtime)
Io_Threads = 4 # Number of io threads
Worker_Threads = 12 # Number of worker threads
Worker_Fibers = 100 # Initial number of fibers
Encryption_Threads = 2 # Number of encryption threads


[File]
MessageCache_Size = 6144 # Amount of message files to cache
DirectoryCache_Size = 10240 # Amount of directories to cache per cache bucket (8 buckets)
Device_Concurrency = 5 # Maximum simultanous io operations per device
Upload_PreAllocation = 0 #


[Locations]
User_Id_Table = ..\etc\UserIdTable
Group_Id_Table = ..\etc\GroupIdTable
Hosts_Rules = ..\etc\Hosts.Rules

User_Files = ..\users
Group_Files = ..\groups
Log_Files = ..\logs
Cache_Files = ..\cache

Default_Vfs = ..\etc\default.vfs
Environment = ..\etc\ioftpd.env


##################### DEVICES ########################

# [Device Name]
# Host = <Host/IP> # External host. Address shown to clients. (0.0.0.0 = any local ip)
# Ports = <Begin-End> # Ports to use for data transfers. May contain comma seperated list of port ranges.
# Random = <True/False> # Use ports in random order
# Bind = <Host/IP> # Internal host. If specified, connections are bound to this address instead of HOST.
#
# Global_Inbound_Bandwidth = <kB/s> # Limit overall inbound speeds
# Global_Outbound_Bandwidth = <kB/s> # Limit overall outbound speeds
# Client_Inbound_Bandwidth = <kB/s> # Limit client inbound speeds
# Client_Outbound_Bandwidth = <kB/s> # Limit client outbound speeds


[Any]
Host = 0.0.0.0
Ports = 1024-2048
Random = True
;Global_Inbound_Bandwidth = 10000
;Global_Outbound_Bandwidth = 10000
;Client_Inbound_Bandwidth = 100 [*registered version*]
;Client_Outbound_Bandwidth = 50 [*registered version*]
;Bind =

################## END OF DEVICES ####################



##################### SERVICES #######################

[FTP_Service]
Type = FTP
Device_Name = Any
Port = 21
Description = SJC FTP Server
User_Limit = 200
Allowed_Users = *
Messages = ..\text\ftp

### Encryption ###

;Require_Encrypted_Auth = =ADMINS
Require_Encrypted_Data = -ioFTPD
Require_Encrypted_Auth = !*
;Require_Encrypted_Data = !*
Certificate_Name = 166.111.112.112
Explicit_Encryption = True
Encryption_Protocol = SSL3
Min_Cipher_Strength = 128
Max_Cipher_Strength = 384

### IDNT command handler ###
#
Get_External_Ident = True

### Traffic Balancing ###
#
;Data_Devices =
;Random_Devices = True


[Telnet_Service]
Type = Telnet
Device_Name = Any
Port = 10556
Description = SJC FTP Managerment via Telnet
User_Limit = 2
Allowed_Users = T !*
Messages = ..\text\telnet


[HTTP_Service]
Type = HTTP
Device_Name = Any
Port = 8080
Description = SJC FTP Managerment via HTTP
User_Limit = 10
Allowed_Users = *
Messages = ..\text\http
Certificate_Name = 166.111.112.112
Explicit_Encryption = True
Encryption_Protocol = SSL3
Min_Cipher_Strength = 128
Max_Cipher_Strength = 384


################## END OF SERVICES ###################


[Network]
Active_Services = FTP_Service

Ident_Timeout = 5 # Set ident timeout (seconds)
Hostname_Cache_Duration = 1800 # Seconds cached hostname is valid
Ident_Cache_Duration = 120 # Seconds cached ident is valid
Connections_To_Ban = 8 #
Ban_Counter_Reset_Interval = 30 #
Temporary_Ban_Duration = 900 # Seconds host remains banned
Internal_Transfer_Buffer = 65536 # Internal transfer buffer size
Scheduler_Update_Speed = NORMAL # Socket scheduler update speed (HIGH/NORMAL/LOW/DISABLED)


[Ftp]
Idle_TimeOut = 120
Login_Attempts = 8
Login_TimeOut = 15
Socket_Send_Buffer = 131072
Socket_Recv_Buffer = 131072
DataSocket_Nagle = False
Transfer_Buffer = 65536 # For maximum scalability, set Transfer & DataSocket buffers to to low values
DataSocket_Send_Buffer = 65536
DataSocket_Recv_Buffer = 65536


[Telnet]
Idle_TimeOut = 120
Login_TimeOut = 15
;Socket_Send_Buffer = 16384
;Socket_Recv_Buffer = 4096
Socket_Send_Buffer = 4096
Socket_Recv_Buffer = 1024


[Http]
Keep_Alive = 180
Max_Memory_Content = 1024000 # Maximum bytes of GET/PUT/POST/HEAD content to cache in memory
;Socket_Send_Buffer = 16384
;Socket_Recv_Buffer = 16384


[Sections]
## Maximum of 10 different credit sections ##
# <alias> = <credit section #> <path>
# <alias> = <credit section #> <stats section #> <path>

Default = 0 *


[VFS]
###
# Default attributes for files & directories
#
# Required Parameters: <filemode> <owner uid>:<owner gid>
#

Default_Directory_Attributes = 755 101:101
Default_File_Attributes = 644 101:101


###
# Command specific rules
#
Modify_Stats_On_Delete = False


###
# Detailed permissions for directories
#
# priviledge = <virtual path> <rights>
#
Upload = /Incoming/* *
Upload = * 1VM
Resume = * 1VM
Download = * *
MakeDir = /Incoming/* *
MakeDir = * 1VM
RemoveOwnDir = * 1VM
RemoveDir = * 1VM
Rename = * 1VM
RenameOwn = * 1VM
Overwrite = * 1VM
Delete = * 1VM
DeleteOwn = * 1VM
NoStats = * !*


[Reset]
WeeklyReset = Monday
;MonthlyReset = 1st


[Scheduler]
###
# Scheduler
#
# Event = <minutes> <hours> <day of month> <day of week> Command
#
# Internal Commands:
#
# &Reset : Resets upload/download counters
# &Service_Update : Reloads devices and Restarts services, if bind ip of service has changed
#
Reset = 0 0 * * &Reset
Service_Update = 10,30,50 * * * &Service_Update


[Events]
;OnUploadError =
;OnUploadComplete = EXEC d:\test.bat
;OnUploadComplete = TCL ..\scripts\test2.itcl
;OnDownloadError =
;OnDownloadComplete =
;OnResume =
;OnUpload =
;OnNewDir =
;OnDelDir =
;OnLogIn =
;OnServerStart =
;OnServerStop =
;OnServiceStart =
;OnServiceStop =


[Modules]
;MessageVariableModule = ..\modules\cookie.dll
;UserModule = ..\modules\networkuser.dll
;GroupModule = ..\modules\networkgroup.dll
;EventModule = ..\modules\eventmodule.dll


[FTP_Pre-Command_Events]
;list =
;stor =
;mkd =

[FTP_Post-Command_Events]
;mkd =
;rmd =
;stor =
;dele =


[FTP_Custom_Commands]
## SITE <trigger> <parameters>
#
# trigger = !file # Show file
# trigger = @string # Alias
# trigger = EXEC script.exe # Execute file.exe
# trigger = %EXEC script.exe # Execute file.exe (translate cookies)
# trigger = TCL script.itcl # Execute file.itcl
#
## Examples
# welcome = !..\text\ftp\welcome.msg
# rehash = @config rehash
# exec = EXEC ..\scripts\exec.bat
# myinfo = %TCL ..\scripts\whoami.itcl %[$user]
# cat = TCL ..\scripts\showfile.itcl
#
;TCL = TCL ..\scripts\test2.itcl
;#TCL = TCL ..\scripts\bottalk.itcl
;BAT = EXEC d:\test.bat
;WHO = TCL ..\scripts\BlzBot.itcl


[Telnet_Binaries]
hello = EXEC c:\ioFTPD\site\bin\hello.bat