![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam pewien problem z jedną stroną zbudowaną na Typo3. Strona rejestruje kilkuset użytkowników na dobę. Pojawił się ostatnio problem z limitem połączeń do bazy MySQL / 100. Typo3 chodzi na mysql_pconnect. Na stronie jest też umieszczony mały skrypt wykonujący połączenie do innej bazy (ten sam host), użytkownik inny niż dla Typo3. Skrypt to proste zapytanie, nie ma mowy o zapętleniu. Skoro mysql_connect i mysql_pconnect wykorzystują jedno połączenie dla danego usera (Typo3 i skrypt to łącznie 2 oddzielne połączenia) to skąd ten problem z limitem? Do głowy przychodzi mi jedno rozwiązanie: Wspomniany skrypt pobiera także za pomocą funkcji fopen zdjęcie z kamery internetowe (inny host). Plik ten nie zawsze jest dostępny, przy większej liczbie zapytań funkcja nie działa zbyt sprawnie. Czy to, że czas wykonywania skryptu nie jest optymalny może wpłynąc na liczbę połączeń do MySQLa? Pozdrawiam Ten post edytował windman 3.03.2009, 11:13:45 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pconnect nie oznacza, że będzie używane tylko 1 połączenie dla wszystkich instancji skryptu - oznacza tylko, że po zakończeniu skryptu, połączenie z którego korzystał nie będzie zamykane, tak by mógł z niego skorzystać następny. Więc jest szybciej o czas potrzebny to stworzenia połączenia, ale limit jednoczesnych połączeń do bazy nadal może być problemem pod obciążeniem.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Więc jest szybciej o czas potrzebny to stworzenia połączenia, ale limit jednoczesnych połączeń do bazy nadal może być problemem pod obciążeniem. Czyli, gdy 50 przeglądarek wywoła w tym samym momencie skrypt z mysql_pconnect to zostanie nawiązanych 50 połączeń do bazy? W tym samym przypadku mysql_connect nawiąże tylko jedno połączenie? Mam jeszcze pytanie odnośnie klasy mysqli... w opisywanym przykładzie i z użyciem tej klasy zostanie nawiązanych także 50 połączeń do bazy? Ten post edytował windman 3.03.2009, 11:55:13 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
50 jednoczesnych requestów:
- connect() - stara się utworzyć 50 nowych połączeń - pconenct() - jeśli jest mniej niż 50 wolnych połączeń to postara się stworzyć brakujące połączenia Przy limicie np. 30 połączeń żadne nie przejdzie ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
50 jednoczesnych requestów: - connect() - stara się utworzyć 50 nowych połączeń Najwyraźniej coś źle zrozumiałem... Po przeczytaniu tego ... "Jeśli, ponownie wywołamy mysql_connect() z tymi samymi argumentami, nie zostanie nawiązane nowe połączenie, lecz zamiast tego, zostanie zwrócony identyfikator obecnie otwartego połączenia. Parametr nowe_połączenie modyfikuje to zachowanie i sprawia, że mysql_connect() zawsze otwiera nowe połączenie" ... myślałem, żę mysql_connect() używa już otwartego połączenia, jeżeli to istnieje... więc jak jest? Ten post edytował windman 3.03.2009, 15:58:01 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
To dotyczy sytuacji w obrębie jednego skryptu - jeśli wywołasz kilka razy mysql_connect() z tymi samymi parametrami nie będzie tworzone nowe połączenie ale przy kolejnym uruchomieniu tego skryptu zostanie już stworzone nowe połączenie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
To dotyczy sytuacji w obrębie jednego skryptu - jeśli wywołasz kilka razy mysql_connect() z tymi samymi parametrami nie będzie tworzone nowe połączenie ale przy kolejnym uruchomieniu tego skryptu zostanie już stworzone nowe połączenie. ok, robi się coraz jaśniej... załóżmy, że mam limit 30 połączeń, skrypt wykonuje się 10 sekund a na stronę mniej więcej jednocześnie wchodzi 60 odwiedzających...w tym przypadku strona wyświetli się tylko dla pierwszej 30? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:20 |