所以,我决定通过线程同时执行许多查询,我使用此代码加载一些数据表:
Dim T As New Threading.Thread(AddressOf loadPlacesData)
Dim T2 As New Threading.Thread(AddressOf loadPortsData)
Dim T3 As New Threading.Thread(AddressOf loadAgentsData)
Dim T4 As New Threading.Thread(AddressOf loadAirlinesData)
Dim T5 As New Threading.Thread(AddressOf loadCountriesData)
Dim T6 As New Threading.Thread(AddressOf loadTransportCompaniesData)
Dim T7 As New Threading.Thread(AddressOf loadHallsData)
Dim T8 As New Threading.Thread(AddressOf loadUsersData)
T.Start()
T2.Start()
T3.Start()
T4.Start()
T5.Start()
T6.Start()
T7.Start()
T8.Start()
并且加载方法包含如下代码:
Public Sub loadUsersData()
Try
Dim command As New MySqlCommand
command.CommandType = CommandType.Text
Dim Conn As New MySqlConnection(ConnectionString)
command.CommandText = "Select UserID from Users"
command.Connection = Conn
Dim d As New MySqlDataAdapter(command)
d.Fill(usersData)
Conn.Dispose() : Command.Dispose()
completed += 1
Catch ex As MySqlException
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
End Try
End Sub
它有时候工作得非常好而且很快,有时它不会加载任何东西并抛出这个异常:
Unable to connect to any of the specified MySQL hosts.
有什么问题?!它被随机抛出
1-我可以通过Workbench连接并执行任何查询而没有任何问题。
2-如果我不使用线程,它运作良好。
备注:
连接字符串:"Server=XX.XX.XX.XX;port=3306;Database=mydatabase;uid=root;password=mypass;SSlMode=Required;CertificateFile=C:\client-cert.pfx;certificatepassword='';pooling=true"
.Net 4.0 MySqlConnector 6.8.3
visual studio 2012
Google Cloud Sql:D1 - 512M RAM
感谢。
答案 0 :(得分:0)
Cloud SQL D1实例有一个100 concurrent connection limit,也许你达到了这个限制?如果您一次多次运行此脚本,或者同事或计算机也访问该实例,则尤其如此。
如果您在实例上运行SHOW PROCESSLIST;
,则可以获得打开的连接列表。