Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

iCloud Photo Library upload killing internet connection

The new iCloud Photo Library is killing my cable internet connection. It will upload for a little while, greatly slowing down my internet access until eventually it just kills my connection. I have to reset my modem, and Photos will upload a bit more before grinding my connection to a halt again. This is ridiculous, and if I can't get it resolved I'm not going to use this "great new feature" and will stop paying for the extra storage, which I won't need if I go back to Photo Stream.

iMac, OS X Yosemite (10.10.3)

Posted on Apr 13, 2015 7:37 AM

Reply
139 replies

Jun 25, 2017 6:52 PM in response to Señor Josué

Others have explained above, but here is another good link that explains why the trade-off on upload/download speeds: http://www.cyberconnect.co.za/blog/mark/adsl-upload-download-speeds-trade-off


Anyway, this started happening to me a couple of months ago on my home network. We have 3 iPhones, 3 iPads, a MacBook, an iMac, 2 Apple TVs, and a Time Capsule...also a few more iOT devices around the house. All with the latest OS versions and result in a lot of network usage. My ISP is a DSL provider with 20mbps download, 1mbps upload.


iPhoto uploads, iDrive uploads on multiple devices start the downloads choking. Airport Utility started showing an orange icon for Internet (no connection), although the uploads were flowing. The ISP tech support guys were baffled and told me to trade-out my ISP router.


Why not limit the upload bandwidth instead of turning-off the iCloud uploads? I found that for the MacOS devices, you can cap your upload bandwidth with the Network Link Conditioner. There is also a way to load this tool on your iPhone, but it takes a few steps. I configured NLC to 1mbps uplink, 20mbps downlink, and a small delay, similar to the DSL preset profile. After turning the tool on with this new profile, my iCloud Photo Library upload no longer choked the bandwidth.


Any way to throttle photo upload?

http://tidbits.com/article/15679

osx - Network Link Conditioner not working on macOS Sierra - Stack Overflow


Unfortunately, with multiple devices in the home, this is a bit more difficult to control. Airport Utility doesn't have bandwidth settings for the Time Capsule. I did find an open source router firmware called Gargoyle that is loaded on a cheap router and is connected between my ISP router and the Time Capsule. With Gargoyle I can monitor bandwidth and control the upload cap for all of my devices together. Because of Gargoyle, I do not need to use NLC on the Macs. Apple, please enable Gargoyle-like functionality in future routers.


https://www.gargoyle-router.com/

How to the Monitor the Bandwidth and Data Usage of Individual Devices on Your Network

Feb 19, 2017 2:28 PM in response to Tim Bloom1

It doesn't matter how fast an internet connection is, if upload is not throttled back properly on your router (usually due to bad modem firmware, you will screw the connection for everyone if you upload gobs of data). It's actually rare to find a good router handling this situation properly and why I use a mikrotik with custom rules created to handle this type of situation.

Here is a video I made documenting the issue.

https://www.youtube.com/watch?v=8FsA4xbXsLM

Apple should provide users with the ability to limit upload/download speed for their sync services like other cloud software does. while they at it, they should also let us pause it!


The problem is that upload will max out a network queue on a web connection, taking everything else out in the queue once the pipe is filled on the upload side. The goal is to make sure the upload pipe never gets to 100%


You need to limit upload either through the software causing the issue itself, or the network link conditioner, or you can get a router with a properly configured queue that wont crap itself when a lot of upload hits it.


...or apple should fix their ****, but who can wait for that. If you want to throw mony at the problem you can try a mikrotik router (not for beginners) and get a copy of my script.

Feb 19, 2017 2:30 PM in response to queglay

Here is the mikrotik script if anyone has one or wants to go down that path. I wont be able to troubleshoot issues here, the script is provided as is.


#!/bin/bash


UPSTREAM_BITS_PER_SECOND=1000000

DOWNSTREAM_BITS_PER_SECOND=4000000

UPSTREAM_PORT=ether1-gateway

LAN_PORT=ether2-master-local


cat <<END

# CLEAR OLD RULES

/ip firewall mangle remove [/ip firewall mangle find]

/ip firewall layer7-protocol remove [/ip firewall layer7-protocol find]

/queue tree remove [/queue tree find]


# INCOMING PACKETS

/ip firewall mangle

add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT passthrough=no protocol=icmp new-packet-mark=d1_icmp

add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT passthrough=no protocol=udp src-port=53 new-packet-mark=d2_dns

add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT passthrough=no protocol=tcp connection-state=new new-packet-mark=d3_syn_ack

add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT passthrough=no protocol=tcp tcp-flags=syn new-packet-mark=d3_syn_ack

add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT passthrough=no protocol=tcp packet-size=0-80 new-packet-mark=d3_syn_ack


add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT connection-bytes=512k-0 src-port=80,443 passthrough=no new-packet-mark=d7_lowhttp protocol=tcp


add action=mark-packet chain=prerouting in-interface=$UPSTREAM_PORT passthrough=no protocol=tcp src-port=80,443 new-packet-mark=d5_http


# OUTGOING PACKETS

# ICMP & DNS

/ip firewall mangle

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT protocol=icmp passthrough=no new-packet-mark=u1_icmp

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT protocol=udp dst-port=53 passthrough=no new-packet-mark=u2_dns

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT protocol=tcp connection-state=new new-packet-mark=u3_syn_ack passthrough=no


# mark games

/ip firewall mangle

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=tcp dst-port=5340-5352,6000-6152,10001-10011,14009-14030,18901-18909

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=tcp dst-port=39190,27780,29000,22100,10009,4300,15001,15002,7341,7451

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=tcp dst-port=40000,9300,9400,9700,7342,8005-8010,37466,36567,8822

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=tcp dst-port=47611,16666,20000,5105,29000,18901-18909,9015

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=udp dst-port=27005,27015

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=udp dst-port=27005-27020,13055,7800-7900,12060-12070

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=udp dst-port=8005-8010,9068,1293,1479,9401,9600,30000

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u4_game passthrough=no protocol=udp dst-port=14009-14030,42051-42052,40000-40050,13000-13080


# long-running connections eg https upload

/ip firewall mangle

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT connection-bytes=512k-0 dst-port=80,443 passthrough=no new-packet-mark=u7_lowhttp protocol=tcp


# detect videos

/ip firewall layer7-protocol

add comment="upload" name=upload regexp="^.*get.+\\\\.(exe|rar|iso|zip|7zip|0[0-9][1-9]|flv|mkv|avi|mp4|3gp|rmvb|mp3|img |dat|mov).*\\$"

add comment="upload" name=document regexp="^.*get.+\\\\.(pdf|doc|docx|xlsx|xls|rtf|ppt|ppt).*\\$"

add comment="video" name=youtube regexp="^.*get.+\\\\.(youtube.com|cdn.dailymotion.com|metacafe.com|mccont.com|vimeo.com ).*\\$"

add comment="video" name=streaming regexp="videoplayback|video"


# mark videos

/ip firewall mangle

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT layer7-protocol=upload protocol=tcp new-packet-mark=u7_lowhttp passthrough=no

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT layer7-protocol=document protocol=tcp new-packet-mark=u7_lowhttp passthrough=no

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT layer7-protocol=youtube protocol=tcp new-packet-mark=u7_lowhttp passthrough=no

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT layer7-protocol=streaming protocol=tcp new-packet-mark=u7_lowhttp passthrough=no


# http/https

/ip firewall mangle

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT new-packet-mark=u5_http protocol=tcp dst-port=80,443 passthrough=no


# mark p2p

/ip firewall mangle

add action=mark-packet chain=postrouting out-interface=$UPSTREAM_PORT p2p=all-p2p new-packet-mark=u8_p2p packet-mark=all-outpkt passthrough=no


# QUEUE TYPES

/queue type

add name=pcq_downstream kind=pcq pcq-rate=$(($DOWNSTREAM_BITS_PER_SECOND * 90 / 100)) pcq-burst-rate=$DOWNSTREAM_BITS_PER_SECOND pcq-classifier=src-address,src-port pcq-total-limit=256


/queue type

add name=pcq_upstream kind=pcq pcq-rate=$(($UPSTREAM_BITS_PER_SECOND * 90 / 100)) pcq-classifier=dst-address,dst-port pcq-total-limit=2048

add name=pcq_upchoke kind=red


# QUEUES

/queue tree

add name=downstream_all parent=$LAN_PORT queue=pcq_downstream packet-mark=all-inpkt priority=8 max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 90 / 100))

add name=downstream_1 parent=downstream_all queue=pcq_downstream packet-mark=d1_icmp priority=1 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_2 parent=downstream_all queue=pcq_downstream packet-mark=d2_dns priority=2 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_3 parent=downstream_all queue=pcq_downstream packet-mark=d3_ack_new priority=3 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_4 parent=downstream_all queue=pcq_downstream packet-mark=d4_game priority=4 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_5 parent=downstream_all queue=pcq_downstream packet-mark=d5_http priority=5 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_6 parent=downstream_all queue=pcq_downstream packet-mark=no-mark priority=6 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_7 parent=downstream_all queue=pcq_downstream packet-mark=d7_lowhttp priority=7 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))

add name=downstream_8 parent=downstream_all queue=pcq_downstream packet-mark=d8_p2p priority=8 limit-at=$(($DOWNSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($DOWNSTREAM_BITS_PER_SECOND * 80 / 100))


/queue tree

add name=upstream_all parent=$UPSTREAM_PORT queue=pcq_upstream packet-mark=all-outpkt priority=8 max-limit=$(($UPSTREAM_BITS_PER_SECOND * 90 / 100))

add name=upstream_1 parent=upstream_all queue=pcq_upstream packet-mark=u1_icmp priority=1 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_2 parent=upstream_all queue=pcq_upstream packet-mark=u2_dns priority=2 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_3 parent=upstream_all queue=pcq_upstream packet-mark=u3_syn_ack priority=3 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_4 parent=upstream_all queue=pcq_upstream packet-mark=u4_game priority=4 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_5 parent=upstream_all queue=pcq_upstream packet-mark=u5_http priority=5 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_6 parent=upstream_all queue=pcq_upstream packet-mark=no-mark priority=6 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_7 parent=upstream_all queue=pcq_upchoke packet-mark=u7_lowhttp priority=7 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))

add name=upstream_8 parent=upstream_all queue=pcq_upchoke packet-mark=u8_p2p priority=8 limit-at=$(($UPSTREAM_BITS_PER_SECOND * 10 / 100)) max-limit=$(($UPSTREAM_BITS_PER_SECOND * 80 / 100))


END


#if false

#then

# PER-IP traffic accounting


echo "/ip firewall filter"

for I in {2..254}

do

echo "add chain=forward action=accept src-address=192.168.88.$I out-interface=$UPSTREAM_PORT log=no"

echo "add chain=forward action=accept dst-address=192.168.88.$I in-interface=$UPSTREAM_PORT log=no"

done

#fi

Feb 23, 2017 12:18 PM in response to Señor Josué

I was having constant dropped internet as well and thought it was my airport express. I replaced with Airport extreme and still had the problem. Contacted cable company and they said all is good from remote testing. I contacted Modem provider (arris Surfboard) they said the power was to high at 8db. I had Cable company come out and all settings were in spec and 8db is in range. The tech started to ask if I use apple products and which ones (2 iphones, 2 ATV, 2 iPads, Imac, Airport extreme, 2 airport express)

He plugged into my AP Extreme to run a ping test and it was running perfect. He asked me to upload a short 30 sec video clip from my iphone to icloud. As soon as I uploaded it the ping stopped and lost connection at the router.


As of today Apple is not aware of the issue and I called tech support to have them look into it they said it is a modem issue.

FIX: As of today the cable company said if you use a different modem (netgear) it will not happen.

Getting a new or different router will not fix it. It seems to be a weird relationship between the Surfboard modem and iCloud data transfer.

Jun 30, 2017 6:58 PM in response to aswick

I've figured this issue out as it was killing my whole network as well anytime I had just taken a bunch of photos and videos on my phone and connected to my wireless network. Hopefully this will help others.


It's not actually the iCloud upload/backup/storage killing your network it is the "My Photo Stream" setting in "Settings -> Photos and Camera". TURN THIS OFF! Apparently as soon as you connect to wifi your phone attempts to send all new photos/videos to all iCloud devices on your network bringing it to its knees.


Good Luck

Jul 1, 2017 7:07 AM in response to ugnud

You make a good point. From what I can see on my Mac with Sierra, without bandwidth control, anything using iCloud has the potential to hog your network. "My Photo Stream" is a good example. I have also seen this with iCloud Drive "Desktop and Documents Folders" when you move a large file onto the Desktop or Documents folders.


iDrive was mentioned in my previous comment, but the app itself has bandwidth control settings. Apple needs these settings at either the MacOS/iOS level or the network level (Airport utility).


For those who are running Gargoyle, the Firewall/QoS (Upload) section should make you happy. Use the defaults and click the checkbox next to "Enable Quality of Service (Upload Direction)" to run all of the iCloud services you desire.

Sep 2, 2017 12:59 AM in response to Señor Josué

My issue was slightly different yet related to iCloud. My throughput was ok according to Speedtest.Net. My ping times to my ISPs local edge router were anywhere from 20ms to 3.6 seconds. What caught me out was I had another computer that was also showing terrible ping times through the same router. The problem would very over the day. The assumption was this was some ISP local fault, as all my devices were suffering? My iphone was also slow loading web pages. Keep in mind that download speed and latency are two different beasts, yet create the impression of a slow connection if either or both are really poor - simplified I know. I then pinged the ISPs edge router using the utility software in my home router, same issue, therefore not a wireless problem.


I had just installed vmware and I thought that was the issue. To take that out of the equation, I restored my mac prior to installing vmware and all good, back to 20ms ping times. Next day I was back at 3.5 second ping times. I then closed the lid on my mac and magically all the other devices started to behave, ping times back to 20ms. In fact, even if I opened the lid on my mac and did nothing the problem returned. I then used the 'Network Utility' program on the mac and started a ping stream to my ISPs edge router, ping times 20ms, 100ms, 2 seconds, 3.5 seconds. I then closed the lid on the mac with the ping stream running, opened the lid and the ping times were 20ms for about 5 seconds and then jumped back to 2 to 3 seconds. Turned off 'iCloud drive' and 20ms every time, problem fixed. This could be my router, yet for anyone else that has this issue I hope this helps.

Dec 21, 2017 5:42 AM in response to eneisch

I can upload multi gb files to a friend using Resilio Sync or other file sharing app and it never takes long, 16Mbps upload connection.

Icloud photos chugs along in its own time and can take many days (Mac never sleeping) to upload similar data volumes when Photos/iCloud decides something has changed and my entire photo/video library needs to be re-uploaded to my iCloud library, I'm guessing for verification (does not iCloud use comparison hash numbers?).

There is something fundamentally broken with Apple's whole iCloud system, the sheer volume of data being transferred unnecessarily by Apple's users must be enormous, a waste of time and energy.

I still love my Apple products but it sure can tax one's patience sometimes.

Apr 14, 2015 5:50 AM in response to Señor Josué

I have the same issue. Seems to be caused by uploading my Photos Library to iCloud. If I go to preferences inThe Photos app and suspend uploading for a day my network and internet speeds go back to normal. I had my cable company here for three hours yesterday trying to figure out what was wrong with my internet speeds. All devices on my network (iPhone, iPad, etc) were affected. Tech replaced my modem, splitters, etc and still no help. He thought it was a hardware issue with my Macbook and was ready to give up. He told me he wished he had a windows PC with him because he was more familiar with the diagnotic tools. I told him I have windows on boot camp and when we botoes into winsows 7 everything was fine and all devices on network were back up to speed. Wasn't till after he left that I realized that the issue was iCloud. at least I got a new modem out of it and it actually improved my upload speeds from what I was getting before. I am going to let my photos finish uploading to the cloud and hopefully the issue will go away. My photo library is approximately 45 gb with about 5,000 photos and 130 videos. I wonder if the size of the library has something to do with it?

Apr 14, 2015 6:38 AM in response to Señor Josué

For both of you -- internet providers tell you about download speeds -- not up load. You are running many downloads at the same time you are trying to upload data - of course things will slow down.


Try disconnecting all of the other devices from WI-FI or cable connection before attempting to upload your photos -- see if that helps the speed - as your other devices may be causing the upload to be shuffled to lower priority -- -- on the mac itself - during upload - turn off time machine, do not surf the net, leave email closed, and don't play any memory hogging games. IF you do let it sit - make sure the mac power saver settings are not on, and about every half hour move something on the desk top to keep the monitor awake.


THis has worked with long slow downloads for me (dial up) and should work for uploads to keep your upload going.


You may also want to query Apple support about upload speeds vs download and priority.

Apr 14, 2015 6:59 AM in response to notcloudy

For this problem:


In iCloud preferences, I delay the upload for one day - then my internet connectivity and application responsiveness resumes. No problem. When the Photo upload resumes the next day - Internet performance goes to near zero. This has been repeatable from the upgrade to 10.10.3 on both my iMac and my MacBook Pro (with other family ids).


Your suggestions are good, but in this case - it is iCloud and Photo - not the other devices or other software.


I have now turned off iCloud for Photos and reduced my storage plan.

Apr 14, 2015 11:39 AM in response to Mack Palm Springs

Happy to report that the uploading of my photos to iCloud has completed and my network performance is back to normal. In my case, I think part of the issues I was having was with my upload speeds that were fixed by my cable company yesterday. The first time I tried to upload to iCloud it was taking several days. After my upload speed was fixed I uploaded my 45GB photo library in about 17 hours (my upload speed is 4Mbps).

Apr 14, 2015 1:08 PM in response to Señor Josué

I am also seeing this problem, and it's very frustrating. I have the activity monitor running showing network activity, and the upload is fairly consistently running at 100 kb/sec, which is (I think) about a fifth of what my uplink is supposed to be capable of. This suggests that Photos itself is throttling the upload speed, perhaps.


In any case, as others have reported, running the upload absolutely kills download performance everywhere on the net, not just for the computer doing the upload. I ran a speed test with and without the upload running, and found that without it, I was getting download speeds of 5-10 Mbps, but with it running, the speed was 0.5 Mbps! I'm not sure why the bandwidth would be affected in that fashion.


Walt Mossberg's review of iCloud Photos says that there was a rare bug he encountered that slowed his speed down, but when Apple "fixed" the bug, he was able to upload an 18,000 photo library in 3 days. My 8,000+ photo library may very well take over a month! I'd sure like better control on turning the upload on or off than just pausing for a day. like specifying the pause time or setting hours it should/should not run. And of course I wish I had Mossberg's internet speeds to work with!

iCloud Photo Library upload killing internet connection

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.